numpy.diagonal
-
numpy.diagonal(a, offset=0, axis1=0, axis2=1)[source] -
Возвращает указанные диагонали.
Если
aявляется 2-мерным массивом, возвращает диагональaс заданным смещением, то есть набор элементов видаa[i, i+offset]. Еслиaимеет более двух измерений, то оси, указанныеaxis1иaxis2, используются для определения 2-мерного подмассива, диагональ которого возвращается. Форма результирующего массива определяется удалениемaxis1иaxis2и добавлением индекса справа, равного размеру полученных диагоналей.В версиях NumPy до 1.7 эта функция всегда возвращала новый независимый массив, содержащий копию значений на диагонали.
В NumPy 1.7 и 1.8 она по-прежнему возвращает копию диагонали, но это поведение устарело. Запись в результирующий массив по-прежнему работает, как раньше, но выводится предупреждение FutureWarning.
Начиная с NumPy 1.9, она возвращает только для чтения представление исходного массива. Попытка записи в результирующий массив приведет к ошибке.
В будущей версии она вернёт представление для чтения/записи, и запись в возвращаемый массив изменит ваш исходный массив. Возвращаемый массив будет иметь тот же тип, что и входной массив.
Если вы не записываете в массив, возвращаемый этой функцией, то можете проигнорировать всё вышесказанное.
Если вы зависите от текущего поведения, мы рекомендуем явно скопировать возвращаемый массив, т. е. использовать
np.diagonal(a).copy()вместо простоnp.diagonal(a). Это будет работать как в прошлых, так и в будущих версиях NumPy.Параметры: a : array_like
Массив, из которого берутся диагонали.
offset : int, необязательно
Смещение диагонали от главной диагонали. Может быть положительным или отрицательным. По умолчанию — главная диагональ (0).
axis1 : int, необязательно
Ось, используемая в качестве первой оси 2-мерных подмассивов, из которых должны быть взяты диагонали. По умолчанию — первая ось (0).
axis2 : int, необязательно
Ось, используемая в качестве второй оси 2-мерных подмассивов, из которых должны быть взяты диагонали. По умолчанию — вторая ось (1).
Возвращает: array_of_diagonals : ndarray
Если
aявляется 2-мерным и не является матрицей, возвращается 1-мерный массив того же типа, что иa, содержащий диагональ. Еслиaявляется матрицей, возвращается 1-мерный массив, содержащий диагональ, чтобы поддерживать обратную совместимость. Если размерностьaбольше двух, возвращается массив диагоналей, «упакованный» слева направо (например, еслиaявляется 3-мерным, то диагонали «упаковываются» по строкам).Возможные исключения: ValueError
Если размерность
aменьше 2.См. также
Примеры
>>> a = np.arange(4).reshape(2,2) >>> a array([[0, 1], [2, 3]]) >>> a.diagonal() array([0, 3]) >>> a.diagonal(1) array([1])Пример с 3-мерным массивом:
>>> a = np.arange(8).reshape(2,2,2); a array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) >>> a.diagonal(0, # Main diagonals of two arrays created by skipping ... 0, # across the outer(left)-most axis last and ... 1) # the "middle" (row) axis first. array([[0, 6], [1, 7]])Подмассивы, главные диагонали которых мы только что получили; обратите внимание, что каждый соответствует фиксированной правой (столбцовой) оси, и что диагонали «упаковываются» по строкам.
>>> a[:,:,0] # main diagonal is [0 6] array([[0, 2], [4, 6]]) >>> a[:,:,1] # main diagonal is [1 7] array([[1, 3], [5, 7]])
© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.diagonal.html