2017-03-14 6 views
1
を効率的にマトリクスの列iで
import numpy as np 
M,N,R = 2,3,4 

# For a 3-dimensional array A: 
A = np.reshape(np.r_[0:M*N*R], [M,N,R], order = 'C') 

# and 2-dimensional array B: 
B = np.reshape(np.r_[0:M*R], [R,M], order = 'C') 

をマトリックススタックのスライスIを掛けIカラムBiによってAのスライスiを乗算から生じるN*Mマトリックスたいです。私はnp.dotnp.einsumを試して、私が必要なものを得ることができませんでした。パイソン:

誰でも助けてください。ありがとう! np.einsum

+0

投稿されたソリューションはあなたのために機能しましたか? – Divakar

+0

ありがとうございます!私はあなたが返信するとすぐに投稿したが、何らかの理由でできなかった。再度、感謝します! –

答えて

2

、我々は持っているだろう -

np.einsum('ijk,ki->ji',A,B) 

のは、与えられたサンプルを使用してnp.dotでマトリックス乗算を使用して結果を検証してみよう - einsum以上を使用する際に関連する側面について

In [35]: A.shape 
Out[35]: (2, 3, 4) 

In [36]: B.shape 
Out[36]: (4, 2) 

In [37]: A[0].dot(B[:,0]) 
Out[37]: array([ 28, 76, 124]) 

In [38]: A[1].dot(B[:,1]) 
Out[38]: array([226, 290, 354]) 

In [39]: np.einsum('ijk,ki->ji',A,B) 
Out[39]: 
array([[ 28, 226], 
     [ 76, 290], 
     [124, 354]]) 

dot-basedツールは、np.dot/np.tensordotのように、related postです。