Spec-Zone.ru › NumPy 1.10

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 она возвращает только для чтения представление исходного массива. Попытка записи в результирующий массив приведет к ошибке.

В NumPy 1.10 она будет возвращать представление с чтением/записью, и запись в возвращаемый массив изменит ваш исходный массив. Возвращаемый массив будет иметь тот же тип, что и входной массив.

Если вы не записываете в массив, возвращаемый этой функцией, то вы можете просто проигнорировать все вышесказанное.

Если вы полагаетесь на текущее поведение, то мы рекомендуем явно скопировать возвращаемый массив, т.е. используйте np.diagonal(a).copy() вместо np.diagonal(a). Это будет работать с прошлыми и будущими версиями NumPy.

Параметры:

a : array_like

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

offset : int, необязательно

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

axis1 : int, необязательно

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

axis2 : int, необязательно

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

Возвращаемое значение:

array_of_diagonals : ndarray

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

Исключения:

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])

Пример с тремя измерениями:

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

Spec-Zone.ru

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