Spec-Zone.ru › NumPy 1.12

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-мерным и не является матрицей, возвращается 1-мерный массив того же типа, что и a, содержащий диагональ. Если a является матрицей, возвращается 1-мерный массив, содержащий диагональ, для поддержания обратной совместимости. Если размерность 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–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.diagonal.html

Spec-Zone.ru

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