numpy.diag()
Функция numpy.diag() имеет двойное назначение: для двумерного массива возвращает её диагональ, а для одномерного — строит квадратную матрицу с этим вектором на главной диагонали.
Сигнатура
numpy.diag(v, k=0)
Параметры
v— входной массив. Если 2D — извлекается диагональ; если 1D — создаётся диагональная матрица.k— смещение диагонали.0— главная,>0— выше,<0— ниже.
Возвращаемое значение
ndarray — 1D-массив элементов диагонали (если на входе 2D) либо 2D-матрица (если на входе 1D).
Примеры
Пример 1. Извлечение главной диагонали.
import numpy as np
m = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(np.diag(m))
[1 5 9]
Пример 2. Построение диагональной матрицы.
v = np.array([10, 20, 30])
print(np.diag(v))
[[10 0 0]
[ 0 20 0]
[ 0 0 30]]
Пример 3. Смещение диагонали.
m = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("k=1:", np.diag(m, k=1))
print("k=-1:", np.diag(m, k=-1))
k=1: [2 6]
k=-1: [4 8]
Пример 4. Диагональная калибровочная матрица датчиков.
# Масштабные коэффициенты для трёх осей акселерометра
scale = np.array([1.02, 0.98, 1.01])
calibration = np.diag(scale)
print(calibration)
[[1.02 0. 0. ]
[0. 0.98 0. ]
[0. 0. 1.01]]
Пример 5. След матрицы через диагональ.
m = np.array([[3, 1, 2], [0, 5, 4], [6, 7, 8]])
trace = np.diag(m).sum()
print("След =", trace)
След = 16
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации NumPy (https://numpy.org/doc/stable/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.