numpy.diag
numpy.diag(v, k=0)
Функция diag() позволяет извлекать диагональ из массива, а так же строить диагональные массивы из одномерных массивов.
-
- v - подобный массиву объект
- Двумерные или одномерные массивы, матрицы, списки или кортежи, а так же лбая функция или объект с методом, возвращаеющие список или кортеж.
- k - индекс диагонали (необязательный)
- По умолчанию k = 0, что соответствует главной диагонали. Положительное значение k смещает диагональ вверх, отрицательное - вниз.
-
- ndarray - массив NumPy
- Указанная диагональ массива или диагональный массив из указанного одномерного массива.
Замечание
Если в качестве параметра 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]])