Ошибка типа: невозможно умножить последовательность на не-int типа 'float' при использовании numpy .linalg.slogdet () - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь вычислить val, но получаю ошибку типа.

Это небольшая часть матрицы, используемая в расчете для отображения типа данных, который она содержит, исходная матрица 30x30.

covM = [[ 9.81431930e-02, -6.94931008e-03, -1.28573646e-02],
       [-6.94931008e-03,  5.28292692e-02,  6.23429384e-03],
       [-7.04098766e-03,  2.64439715e-04, -8.66008123e-04]]

Чтобы найти val Я вычисляю:

val = math.sqrt((2*pi)**30*np.linalg.slogdet(covM))

Но получаю это:

TypeError: can't multiply sequence by non-int of type 'float'

Когда я пытаюсь использовать нормальный определитель вместо журнала, он работает отлично:

val = math.sqrt((2*pi)**30*np.linalg.det(covM))

Почему эта ошибка возникает с slogdet (), а не с det (), и как я могу заставить ее работать для определителя журнала?

1 Ответ

0 голосов
/ 13 апреля 2020

Так как np.linalg.slogdet() возвращает значение два значения: знак определителя и определитель журнала. Мне нужно было указать знак. Итак, чтобы получить абсолютные значения я сделал:

val = math.sqrt((2*pi)**30*np.linalg.slogdet(covM)[1])
...