numpy.diag

numpy.diag(v, k=0)

Функция diag() позволяет извлекать диагональ из массива, а так же строить диагональные массивы из одномерных массивов.

Параметры:
v - подобный массиву объект
Двумерные или одномерные массивы, матрицы, списки или кортежи, а так же лбая функция или объект с методом, возвращаеющие список или кортеж.
k - индекс диагонали (необязательный)
По умолчанию k = 0, что соответствует главной диагонали. Положительное значение k смещает диагональ вверх, отрицательное - вниз.
Возвращает:
ndarray - массив NumPy
Указанная диагональ массива или диагональный массив из указанного одномерного массива.
Смотрите так же: eye, diagflat, tri, tril, triu

Замечание

Если в качестве параметра v указан двумерный массив, то будет извлечена его диагональ. Если v это одномерный массив, то из него будет построен диагональный массив.

Возвращает ли данная функция копию или представление данных исходного массива зависит от того какую версию NumPy вы используете.


Примеры

>>> import numpy as np
>>> 
>>> a = np.array([[1, 2, 3, 4], [4, 1, 2, 3], [3, 4, 1, 2], [2, 3, 4, 1]])
>>> a
array([[1, 2, 3, 4],
       [4, 1, 2, 3],
       [3, 4, 1, 2],
       [2, 3, 4, 1]])
>>> 
>>> np.diag(a)
array([1, 1, 1, 1])
>>> 
>>> np.diag(a, k=1)
array([2, 2, 2])
>>> 
>>> np.diag(a, k=-1)
array([4, 4, 4])
>>> 
>>> 
>>> np.diag(np.diag(a))
array([[1, 0, 0, 0],
       [0, 1, 0, 0],
       [0, 0, 1, 0],
       [0, 0, 0, 1]])
>>> 
>>> np.diag(np.diag(a, k=1))
array([[2, 0, 0],
       [0, 2, 0],
       [0, 0, 2]])
>>> 
>>> np.diag(np.diag(a, k=-1))
array([[4, 0, 0],
       [0, 4, 0],
       [0, 0, 4]])
>>> 
>>> 
>>> #  Диагональный массив можно построить 
... #  на основании имеющегося одномерного массива:
... a = np.array([1, 2, 3, 4, 5, 6])
>>> a
array([1, 2, 3, 4, 5, 6])
>>> 
>>> np.diag(a)
array([[1, 0, 0, 0, 0, 0],
       [0, 2, 0, 0, 0, 0],
       [0, 0, 3, 0, 0, 0],
       [0, 0, 0, 4, 0, 0],
       [0, 0, 0, 0, 5, 0],
       [0, 0, 0, 0, 0, 6]])