引言
先吐槽兩句,真的是Matlab纔不會報這種錯,今天計算逆矩陣報了個這麼個錯,一個簡單的2*2的可逆矩陣居然死活求不出來,好氣啊。
TypeError: No loop matching the specified signature and casting was found for ufunc inv
astype數據類型轉換
在網上查閱了一下資料,覺得可能是類型錯誤,但是很奇怪明明一開始都指明瞭是float
怎麼還是沒有。debug的時候關顧看數值了,沒有注意到類型變化,後來輸出這個計算後的矩陣發現是Object
類型,怪不得不能求逆。真實太氣人了!
這裏用dtype
修改是不會真實改變數據的類型,需要通過astype
方法來修改,如下。這樣你就能看到它的真實類型改過來了,我也順利求得了A的逆矩陣。
A = A.astype(np.float)
print(A.dtype)
如果有大佬知道爲什麼中途數據類型會變爲Object
,麻煩告知一下,實屬感激。
【參考資料】:
[1] 羅兵の水庫.numpy數據類型dtype轉換.
[2] numpy中數據類型統一轉換成float,object