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.