2016-11-08 118 views
0

我對Numpy數組感到困惑。假設我有兩個Numpy數組。Numpy矩陣(數組)理由

a = np.array([[1,2], [3,4], [5,6]]) 
b = np.array([[1,10], [1, 10]]) 

我的ab解釋是3×2和2×2矩陣,即,

a = 1 2 b = 1 10 
    3 4  1 10 
    5 6 

然後,我想這應該是細做a * b,因爲它是3×2和2×2矩陣的乘法。但是,這是不可能的,我不得不使用a.dot(b)

鑑於這個事實,我認爲我對Numpy陣列的解釋是不正確的。任何人都可以讓我知道我應該如何看待Numpy數組?我知道如果我將ab轉換爲np.matrix,我可以做a*b。然而,看着其他的代碼,似乎人們可以使用Numpy數組作爲矩陣,所以我想知道我應該如何理解Numpy數組的矩陣。

+0

如果你使用的是Python 3.5,你可以使用'a @ b'來做你想做的事。 'a * b'進行_elementwise_乘法運算。 – SethMMorton

+0

此外,要檢查您是否符合尺寸,可以嘗試'.shape'查看尺寸。然後,如果您發現尺寸不匹配,您可以轉置它。 :) – 2016-11-08 04:30:00

+0

這兩種multipatatin是有用的。看看MATLAB代碼,你會看到'a * b'和'a。* b'。 – hpaulj

回答

2

對於numpy的陣列中,*操作者通過陣列的元件乘法用於元件。如果兩個數組具有相同的尺寸,那麼這只是很好的定義。照亮* -multiplication,注意通過用單位矩陣元素乘法該元素將不會返回相同的矩陣

>>> I = np.array([[1,0],[0,1]]) 
>>> B = np.array([[1,2],[3,4]]) 
>>> I*B 
array([[ 1, 0], 
     [ 0, 4]]) 

使用numpy的功能dot(a,b)產生典型的矩陣乘法。

>>> dot(I,B) 
array([[ 1, 2], 
     [ 3, 4]]) 
+1

結果如何(I * B)第二列第二行? –

+0

謝謝你的收穫!我意外地從我的終端複製並粘貼了錯誤的乘法運算。上面更正的錯誤。 –

1

np.dot可能是你在找什麼?

a = np.array([[1,2], [3,4], [5,6]]) 

b = np.array([[1,10], [1, 10]]) 

np.dot(a,b) 

Out[6]: 
array([[ 3, 30], 
     [ 7, 70], 
     [ 11, 110]])