numpy.diagonal
-
numpy.diagonal(a, offset=0, axis1=0, axis2=1)[source] -
Возвращает указанные диагонали.
Если
aявляется двумерным, возвращает диагональaс заданным смещением, т.е. совокупность элементов видаa[i, i+offset]. Еслиaимеет более двух измерений, то оси, указанныеaxis1иaxis2, используются для определения двумерного подмассива, диагональ которого возвращается. Форму результата можно определить, удаливaxis1иaxis2и добавив индекс справа, равный размеру полученных диагоналей.В версиях NumPy до 1.7 эта функция всегда возвращала новый, независимый массив, содержащий копию значений на диагонали.
В NumPy 1.7 и 1.8 она по-прежнему возвращает копию диагонали, но этот факт устарел. Запись в результирующий массив по-прежнему работает так же, как раньше, но выводится предупреждение FutureWarning.
Начиная с NumPy 1.9, она возвращает только для чтения представление исходного массива. Попытка записи в результирующий массив приведет к ошибке.
В какой-то будущей версии она вернет представление для чтения/записи, и запись в результирующий массив изменит исходный массив. Возвращаемый массив будет иметь тот же тип, что и входной массив.
Если вы не записываете в массив, возвращаемый этой функцией, то вы можете просто проигнорировать всё вышесказанное.
Если вы полагаетесь на текущее поведение, то мы рекомендуем явно скопировать возвращаемый массив, т.е. используйте
np.diagonal(a).copy()вместо простоnp.diagonal(a). Это будет работать как с прошлыми, так и с будущими версиями NumPy.- Parameters
-
-
aarray_like -
Массив, из которого берутся диагонали.
-
offsetint, optional -
Смещение диагонали от главной диагонали. Может быть положительным или отрицательным. По умолчанию — главная диагональ (0).
-
axis1int, optional -
Ось, используемая в качестве первой оси двумерных подмассивов, из которых должны быть взяты диагонали. По умолчанию — первая ось (0).
-
axis2int, optional -
Ось, используемая в качестве второй оси двумерных подмассивов, из которых должны быть взяты диагонали. По умолчанию — вторая ось (1).
-
- Returns
-
-
array_of_diagonalsndarray -
Если
aявляется двумерным, то возвращается одномерный массив, содержащий диагональ и имеющий тот же тип, что иa, за исключением случая, когдаaявляетсяmatrix, в этом случае возвращается одномерный массив вместо двумерногоmatrixдля сохранения обратной совместимости.Если
a.ndim > 2, то измерения, заданныеaxis1иaxis2, удаляются, и в конце вставляется новая ось, соответствующая диагонали.
-
- Raises
-
- 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]])Противоположную диагональ можно получить, переставив порядок элементов с помощью либо
numpy.flipud, либоnumpy.fliplr.>>> a = np.arange(9).reshape(3, 3) >>> a array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> np.fliplr(a).diagonal() # Horizontal flip array([2, 4, 6]) >>> np.flipud(a).diagonal() # Vertical flip array([6, 4, 2])Обратите внимание, что порядок, в котором извлекается диагональ, зависит от функции переворачивания.
© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/generated/numpy.diagonal.html