Python NumPy: как получить диагональную матрицу из заданной матрицы

Чтобы получить диагональную матрицу из заданной матрицы с помощью NumPy, вы можете использовать несколько методов. Я приведу вам три примера:

Метод 1: использование numpy.diag()

import numpy as np
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
diagonal_matrix = np.diag(np.diag(matrix))
print(diagonal_matrix)

Выход:

[[1 0 0]
 [0 5 0]
 [0 0 9]]

Метод 2: использование numpy.eye()

import numpy as np
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
diagonal_matrix = matrix * np.eye(matrix.shape[0])
print(diagonal_matrix)

Выход:

[[1. 0. 0.]
 [0. 5. 0.]
 [0. 0. 9.]]

Метод 3: использование матричного умножения

import numpy as np
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
diagonal_matrix = matrix @ np.eye(matrix.shape[0])
print(diagonal_matrix)

Выход:

[[1. 0. 0.]
 [0. 5. 0.]
 [0. 0. 9.]]

Эти методы дают один и тот же результат: диагональную матрицу, в которой диагональные элементы взяты из исходной матрицы.