2017-02-27 9 views
2

2つの配列にeinsumを使用して A =(10,1)、B =(1,1,1,0,18)の次元を掛けたいとします。einsumを使用した行列の乗算

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)