2013-03-20 113 views
1

我想使一個2×2矩陣如何製作numpy數組的矩陣?

T = [[A, B], 
    [C, D]] 

,其中每個元素是A,B,C,D的陣列(相同大小的,當然)。這可能嗎?

我希望能夠繁殖這些基質,例如乘兩個MATRIX T1T2應該給我

T1*T2 = [[A1*A2, B1*B2], 
     [C1*C2, D1*D2]] 

這仍然是相同大小的數組的矩陣。有這樣一個乘法函數嗎?

還有,如果我乘T與正常的標量矩陣t = [[a,b],[c,d]]其中a,b,c,d是標量數字,乘法應該給我

t*T = [[a*A, b*B], 
     [c*C, d*D]] 

我怎樣才能做到這一點?相關材料的示例或​​鏈接將非常棒。

回答

2

您的第一個問題是否按照您預期的那樣工作?

In [1]: import numpy as np 

In [2]: arr = np.arange(8).reshape(2, 2, 2) 

In [3]: arr 
Out[3]: 
array([[[0, 1], 
     [2, 3]], 

     [[4, 5], 
     [6, 7]]]) 

In [4]: arr*arr 
Out[4]: 
array([[[ 0, 1], 
     [ 4, 9]], 

     [[16, 25], 
     [36, 49]]]) 

關於你的第二個問題,只是它重塑到3維數組:

In [5]: arr2 = np.arange(4).reshape(2, 2) 

In [6]: arr2 
Out[6]: 
array([[0, 1], 
     [2, 3]]) 

In [7]: arr2 = arr2.reshape(2, 2, 1) 

In [8]: arr2 
Out[8]: 
array([[[0], 
     [1]], 

     [[2], 
     [3]]]) 

In [9]: arr*arr2 
Out[9]: 
array([[[ 0, 0], 
     [ 2, 3]], 

     [[ 8, 10], 
     [18, 21]]]) 
+0

謝謝!這太棒了。我認爲我的錯誤到第一部分是我應該使用'array'函數來構造矩陣,而不是'矩陣'函數。第二部分完美地工作,正是我想要的。 – LWZ 2013-03-20 15:09:07

0
>>> from numpy import array, matrix, multiply 
>>> A = array([1, 2, 3]) 
>>> 
>>> B = array([2, 3, 4]) 
>>> 
>>> C = array([4, 5, 6]) 
>>> 
>>> D = array([7, 8, 9]) 
>>> 
>>> T1 = matrix([A, B, C, D]) 
>>> T1 
matrix([[1, 2, 3], 
     [2, 3, 4], 
     [4, 5, 6], 
     [7, 8, 9]]) 
>>> T2 = T1 * 100 
>>> T2 
matrix([[100, 200, 300], 
     [200, 300, 400], 
     [400, 500, 600], 
     [700, 800, 900]]) 
>>> 
>>> multiply(T1, T2) 
matrix([[ 100, 400, 900], 
     [ 400, 900, 1600], 
     [1600, 2500, 3600], 
     [4900, 6400, 8100]]) 
>>>