、ほとんどない思考::次の特性を持つ
Z=np.einsum('nk,nq->kq',X,Y)
私はまた、転置または2で、np.dot
でそれを書くことができます。 np.dot
は、第一及び第二の最後の薄暗い以上の行列の和は何第二
Z = np.dot(X.T, Y)
=================
In [566]: n,k,q=2,3,4
In [567]: X=np.arange(n*k).reshape(n,k)
In [568]: Y=np.arange(n*q).reshape(n,q)
In [569]: Z=np.einsum('nk,nq->kq',X,Y)
In [570]: Z
Out[570]:
array([[12, 15, 18, 21],
[16, 21, 26, 31],
[20, 27, 34, 41]])
In [571]: Z1=np.empty((k,q))
In [572]: Z1=np.array([X[:,c].dot(Y) for c in range(k)])
In [573]: Z1
Out[573]:
array([[12, 15, 18, 21],
[16, 21, 26, 31],
[20, 27, 34, 41]])
In [574]: X.T.dot(Y)
Out[574]:
array([[12, 15, 18, 21],
[16, 21, 26, 31],
[20, 27, 34, 41]])
の最後にするん'Z'の最終形状? (k、)? (k、q)あなたは 'n 'サイズを合計していますか?詳細はどうぞ。小さな2x3x4の例もありますので、私たちはあなたを理解しています。 – hpaulj
Zの最終形状は(k、q)である。私はループのバージョンをすぐにポスティングしようとする場合はそれが役立つかもしれません。 – 1nsg
上記のループバージョンをご覧ください。 – 1nsg