Надо выбрать из матрицы диагональные элементы

Пытаюсь выбрать из матрицы элементы на главной диагонали с тем, чтобы следом реализовать функционал расчета определителя матрицы по формуле:

a11*a22*a33 + a12*a23*a31 + a21*a13*a32 - a31*a22*a13 - a12*a21*a33 - a11*a23*a32.

В результате обхода строк и колонок матрицы получаю ошибку:

arrays used as indices must be of integer (or boolean) type

То есть:

массивы, используемые в качестве индексов, должны быть целочисленного (или логического) типа.

Почитал: пишут, что проблема в пустом массиве; советуют явно в нем задать тип float (вроде того: list_plus_1=np.array([], dtype=float)), однако не работает. Есть идеи, как записать в пустой список диагональные элементы?

import numpy as np
def det(matrix):
    list_plus_1=np.array([])
    for rows in matrix[:,:3]:
        for columns in matrix[rows]:
            if columns == matrix[columns][columns]:
                list_plus_1.append(columns)
                print(list_plus_1)
                
matrix = np.array([[3.8, 6.7, -1.2, 5.2],
                   [6.4, 1.3, -2.7, 3.8],
                   [2.4, -4.5, 3.5, -0.6]])

det(matrix)

Ответы (3 шт):

Автор решения: Алексей Казанцев

Реализовал вот такой код

def det(matrix):
    list_plus_1=[]
    for nrow, row in enumerate(matrix[:,:3]):
        elem = row[nrow]
        list_plus_1.append(elem)
    print(list_plus_1)
→ Ссылка
Автор решения: strawdog
import numpy as np
                
matrix = np.array([[3.8, 6.7, -1.2, 5.2],
                   [6.4, 1.3, -2.7, 3.8],
                   [2.4, -4.5, 3.5, -0.6]])
print(np.diag(matrix))

[3.8 1.3 3.5]

np.diag может принимать параметры. читайте документацию.

→ Ссылка
Автор решения: Даниил Ермошин
def det(matrix):
    list_diag = []
    for i in range(len(matrix)):
        list_diag.append(matrix[i][i])
    return list_diag
→ Ссылка