2014-02-21 238 views
3

我具有矩陣T如何乘numpy矩陣乘numpy數組?

[ 0.2 0.4 0.4] 
[ 0.8 0.2 0. ] 
[ 0.8 0. 0.2] 

T = numpy.mat("0.2 0.4 0.4;0.8 0.2 0.0;0.8 0.0 0.2") 

我有矢量v,numpy.array(73543,-36772,36772)

v = numpy.array([ 73543, -36772, 36772]) 

如何由矩陣T正確乘以陣列v在python中?

感謝,

克里斯

+0

要澄清,你想執行v * T或T * v嗎? – Thayne

回答

0

可以使用*運營商,一旦你正確地列隊尺寸(LHS列數必須等於RHS行):

T * v.reshape(3,1)

1

使用numpy.dot,這是不一樣*操作完全相同:

In [138]: T.dot(v) #the resulting shape is (1, 3), not (3, 1) if you don't care 
Out[138]: matrix([[ 14708.6, 51480. , 66188.8]]) 

In [139]: v.dot(T) #same with v * T 
Out[139]: matrix([[ 14708.6, 22062.8, 36771.6]]) 

In [140]: T.dot(v[:, None]) #if you need the shape to be (3, 1) when doing T*v 
Out[140]: 
matrix([[ 14708.6], 
     [ 51480. ], 
     [ 66188.8]]) 
0

簡單:

v * T 

numpy的超載運算的方式,有意義的大部分時間運行。在你的情況下,由於T是一個矩陣,所以它在轉換乘法之前將v轉換爲矩陣。這將v變成一個行向量。因此v*T執行矩陣乘法,但T*v引發異常,因爲v是錯誤的形狀。但是,您可以使用v.reshape(3,1)使v成爲正確的形狀,或者使用​​或numpy.dot(T,v)將v作爲正確方向的向量。