簡體   English   中英

TypeError:使用 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()返回值兩個值,即行列式的符號和對數行列式。 我需要指定標志。 所以為了獲得絕對值,我做了:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM