Функция diag
Функция diag работает с диагоналями массивов.
Если на вход подаётся двумерный массив, она извлекает его главную диагональ в виде одномерного массива.
Если на вход подаётся одномерный массив, она создаёт двумерную диагональную матрицу,
где элементы входного массива располагаются на главной диагонали, а остальные элементы равны нулю.
Вторым параметром можно указать смещение относительно главной диагонали.
Синтаксис
np.diag(v, [k=0])
Пример
Извлечём главную диагональ из квадратной матрицы:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
res = np.diag(arr)
print(res)
Результат выполнения кода:
[1 5 9]
Пример
Извлечём диагональ со смещением на одну позицию выше главной:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
res = np.diag(arr, k=1)
print(res)
Результат выполнения кода:
[2 6]
Пример
Извлечём диагональ со смещением на одну позицию ниже главной:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
res = np.diag(arr, k=-1)
print(res)
Результат выполнения кода:
[4 8]
Пример
Создадим диагональную матрицу из одномерного массива:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
res = np.diag(arr)
print(res)
Результат выполнения кода:
[[1 0 0 0 0]
[0 2 0 0 0]
[0 0 3 0 0]
[0 0 0 4 0]
[0 0 0 0 5]]
Пример
Создадим диагональную матрицу со смещением на одну позицию выше главной диагонали:
import numpy as np
arr = np.array([1, 2, 3, 4])
res = np.diag(arr, k=1)
print(res)
Результат выполнения кода:
[[0 1 0 0 0]
[0 0 2 0 0]
[0 0 0 3 0]
[0 0 0 0 4]
[0 0 0 0 0]]
Пример
Создадим диагональную матрицу со смещением на две позиции ниже главной диагонали:
import numpy as np
arr = np.array([1, 2, 3])
res = np.diag(arr, k=-2)
print(res)
Результат выполнения кода:
[[0 0 0 0 0]
[0 0 0 0 0]
[1 0 0 0 0]
[0 2 0 0 0]
[0 0 3 0 0]]