我有两个2D的 numpy 数组,名为 A 和 B,其中 A 是 M x N 的,B 是 M x n 的。我的问题是我想要将 B 的每一行的每个元素与对应的 A 的行相乘,并创建一个大小为 M x n x N 的 3D 矩阵 C,而不使用 for 循环。
例如,如果 A 是:
例如,如果 A 是:
A = np.array([[1, 2, 3],
[4, 5, 6]])
并且B
是
B = np.array([[1, 2],
[3, 4]])
那么得出的乘法结果C = A x B
大概是这样的:
C = [
[[1, 2],
[12, 16]],
[[2, 4],
[15, 20]],
[[3, 6],
[18, 24]]
]
你明白我试图实现什么,而且是否可能在没有任何for
循环的情况下完成?最好,tingis。
einsum
可以做出奇妙的事情,我认为它也比其他 numpy 向量乘积方法更快。此外,在 -> 之后改变索引顺序,您可以进行重新整形而无需额外调用实际的reshape
。 - yevgeniynewaxis
方法相当。 - Saullo G. P. Castro