0

我正在尝试计算,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() 会发生此错误,我怎样才能使它适用于日志行列式?

4

1 回答 1

0

由于np.linalg.slogdet()返回值两个值,行列式的符号和对数行列式。我需要指定标志。所以为了获得绝对值,我做了:

val = math.sqrt((2*pi)**30*np.linalg.slogdet(covM)[1])
于 2020-04-13T15:54:20.587 回答