Spec-Zone.ru › NumPy 1.11

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.

См. также

diag
Аналог MATLAB для 1-мерных и 2-мерных массивов.
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]])

© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.diagonal.html

Spec-Zone.ru

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