我有 2 个矩阵 A
( mxn
) 和 B
(nxm
)。我会得到矩阵 C
( nxmxm
), 这样 C[i]=A[:, i].dot(B[i, :])
.换句话说,我想得到矩阵,其中第一个元素是 A
的第一列的点。和第一行 B
, 第二个元素是 A
第二列的点第二行 B
, ETC。
例如对于这样的 A
和 B
A = np.array([[1, 2, 3], [0, 1, -1]])
B = np.array([[4, 5], [6, 7], [8, 9]])
我想要这样的矩阵:
C = np.array([[[4, 5], [0, 0]],
[[12, 14], [6, 7]],
[[24, 27], [-8, -9]]])
没有循环是否可能?如果不是,是否有可能案例 A = B.T
?
最佳答案
你可以使用np.einsum
:
np.einsum('ij,jk->ijk', A, B)
array([[[ 4, 5],
[12, 14],
[24, 27]],
[[ 0, 0],
[ 6, 7],
[-8, -9]]])
编辑
来自您的评论:
np.einsum('ij,jk->jik', A, B)
将为您提供所需的 C
关于python - numpy中的逐行乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40413000/