将 3D 矩阵与 2D 矩阵相乘得到 2D 矩阵
Multiply a 3D matrix with 2D matrix to give a 2D matrix
我有 2 个矩阵。假设大小为 6610 的 A 和大小为 610 的 B。我想要做的是将 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 循环。
我们可以使用np.einsum
-
mat = np.einsum('ijk,jk->ik',A,B)
或者,np.matmul/@-operator
-
mat = (A.transpose(2,0,1)@B.T[:,:,None])[...,0].T
我有 2 个矩阵。假设大小为 6610 的 A 和大小为 610 的 B。我想要做的是将 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 循环。
我们可以使用np.einsum
-
mat = np.einsum('ijk,jk->ik',A,B)
或者,np.matmul/@-operator
-
mat = (A.transpose(2,0,1)@B.T[:,:,None])[...,0].T