Spec-Zone.ru › NumPy 1.19

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.

Параметры
aarray_like

Массив, из которого берутся диагонали.

offsetint, optional

Смещение диагонали от главной диагонали. Может быть положительным или отрицательным. По умолчанию — главная диагональ (0).

axis1int, optional

Ось, которая должна использоваться в качестве первой оси двумерных подмассивов, из которых должны быть взяты диагонали. По умолчанию — первая ось (0).

axis2int, optional

Ось, которая должна использоваться в качестве второй оси двумерных подмассивов, из которых должны быть взяты диагонали. По умолчанию — вторая ось (1).

Возвращает
array_of_diagonalsndarray

Если a является двумерным, то возвращается одномерный массив, содержащий диагональ и имеющий тот же тип, что и a, за исключением случаев, когда a является matrix, в этом случае возвращается одномерный массив, а не (двумерная) matrix, для обеспечения обратной совместимости.

Если a.ndim > 2, то размеры, заданные axis1 и axis2, удаляются, а новая ось вставляется в конец, соответствующая диагонали.

Возбуждает
ValueError

Если размерность a меньше 2.

См. также

diag

Аналог MATLAB для одномерных и двумерных массивов.

diagflat

Создание массивов с диагональными элементами.

trace

Суммирование по диагоналям.

Примеры

>>> 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.19/reference/generated/numpy.diagonal.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API