2017-02-27 133 views
2

我想用以下維度乘以兩個陣列: A =(10,1),B =(1,1,10,18)使用艾蘇姆。矩陣乘法與使用真相法

tmp = np.einsum('pi,klpy ->kliy', A, B) 

我是否需要切換B陣列的尺寸才能獲得正確的結果? 我的意思是:

tmp = np.einsum('pi,lkyp ->kliy', A, B) 
+0

非常確信第二甚至不會工作 –

+0

什麼是正確的決定,真的。你的軸代表什麼具體的東西?或者你可以寫成一個你想實現的操作的循環? –

回答

1

你知不知道這兩個結果有不同的形狀? 如果是這樣,你應該很可能知道你期望的形狀。

import numpy as np 

A=np.arange(10).reshape(1,10) 
B=np.arange(180).reshape(1,1,10,18) 

np.einsum('pi,klpy ->kliy', A, B).shape 
np.einsum('pi,lkyp ->kliy', A, B).shape 

結果

np.einsum('pi,klpy ->kliy', A, B).shape 
Out: (1, 1, 10, 18)  
np.einsum('pi,lkyp ->kliy', A, B).shape 
Out: (1, 1, 10, 10)