【发布时间】:2017-02-01 17:42:40
【问题描述】:
我有两个 3D numpy ndarray
A=np.array([[[1, 1],
[1, 1],
[1, 1]],
[[2, 2],
[2, 2],
[2, 2]]])
B=np.array([[[ 2, 0],
[ 0, 2]],
[[ 2, -2],
[-2, 2]]])
我想用元素 ABijk=∑m (Aijm*Bimk) 创建 AB 数组>) 其中求和仅在 m-index 上(重复)而不是在 i 上(依次重复)。
换句话说,我可以通过这个 for 循环获得 di AB ndarray
for i in range(2):
AB[i,:,:]=np.dot(A[i,:,:],B[i,:,:])
AB等于
array([[[ 2., 2.],
[ 2., 2.],
[ 2., 2.]],
[[ 0., 0.],
[ 0., 0.],
[ 0., 0.]]])
有没有办法避免 for 循环? tensordot或einsum如何获取AB数组?
谢谢你的回答,我真的很感激。
【问题讨论】: