我有两个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]]])
我想创建一个AB数组,其中元素ABijk=∑m (Aijm*Bimk),其中求和仅针对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数组?
感谢您的回答,非常感激。
einsum
目前尚未使用 BLAS。 - Daniel