2011-10-01 72 views
2

我有1X2矩陣,Mu_I.transpose()和一個2x2矩陣,Covariance_I_InversePython中的矩陣乘法更改結果維度

乘法的結果應該是1x2矩陣,但是我的輸出是2x2矩陣。

爲什麼?我怎樣才能得到1x2矩陣?

>>> Mu_I.transpose() 
[[ 10.02010924 9.99184818]] 

>>> Mu_I.transpose().shape 
(1, 2) 

>>> Covariance_I_Inverse 
[[ 0.72006911 0.  ], 
[ 0.   0.77689697]] 

>>> Covariance_I_Inverse.shape 
(2, 2) 

>>> (Mu_I.transpose()*Covariance_I_Inverse) 
[[ 7.21517113 0.  ], 
[ 0.   7.76263658]] 

>>> (Mu_I.transpose()*Covariance_I_Inverse).shape 
(2, 2) 
+0

謝謝大家,情況正是如此,我如何才能發現我正在使用數組或矩陣,因爲我正在使用我剛剛安裝的框架,並且我不知道代碼 –

回答

6

我猜這些變量是numpy.array,但不numpy.matrix。對於numpy.array,*被定義爲元素方式的乘法。在這種情況下,請使用numpy.dot()。這會給你矩陣乘法。

或者乾脆用numpy.matrix* operator就會矩陣乘。

+2

或更好,堅持數組並使用np.dot。如果數組和矩陣不在相同的代碼中混合使用,它就不那麼令人困惑了。 repr(y)或type(y)顯示數組的類型,矩陣或數組或任何其他子類。 – user333700