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-мерным и не являетсяmatrix, возвращается 1-мерный массив того же типа, что иa, содержащий диагональ. Еслиaявляетсяmatrix, возвращается 1-мерный массив, содержащий диагональ, чтобы обеспечить обратную совместимость. Еслиa.ndim > 2, то измерения, заданныеaxis1иaxis2, удаляются, и вставляется новая ось в конец, соответствующая диагонали.Возможные исключения: 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]])
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.14.5/reference/generated/numpy.diagonal.html