TypeError: can't multiply sequence by non-int of type 'float' when using numpy.linalg.slogdet()
TypeError: can't multiply sequence by non-int of type 'float' when using numpy.linalg.slogdet()
我正在尝试计算 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() 会出现此错误?我如何才能使其适用于对数行列式?
由于np.linalg.slogdet()
returnsvalue两个值,行列式的符号和对数行列式。我需要指定标志。
所以为了获得绝对值,我做了:
val = math.sqrt((2*pi)**30*np.linalg.slogdet(covM)[1])
我正在尝试计算 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() 会出现此错误?我如何才能使其适用于对数行列式?
由于np.linalg.slogdet()
returnsvalue两个值,行列式的符号和对数行列式。我需要指定标志。
所以为了获得绝对值,我做了:
val = math.sqrt((2*pi)**30*np.linalg.slogdet(covM)[1])