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-мерным и не является матрицей, возвращается одномерный массив того же типа, что иa, содержащий диагональ. Еслиaявляется матрицей, возвращается одномерный массив, содержащий диагональ, для поддержания обратной совместимости. Если размерность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–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.diagonal.html