提问者:小点点

将3D矩阵与2D矩阵相乘,得到2D矩阵


我有两个矩阵。 比如说A是6610号的,B是610号的。 我要做的是将A的10 66个矩阵与B的10 6个元素向量相乘,得到一个6*10的矩阵。 有没有一种不用循环就能做到这一点的方法?

我想要的是

A = np.ones((6,6,10))
B = np.ones((6,10))
mat = np.zeros((6,10))
for i in range(10):
    mat[:,i] = A[:,:,i]@B[:,i] 

但没有for循环。


共1个答案

匿名用户

我们可以使用np.einsum-

mat = np.einsum('ijk,jk->ik',A,B)

或者,使用np.matmul/@-operator-

mat = (A.transpose(2,0,1)@B.T[:,:,None])[...,0].T