【发布时间】:2021-05-25 20:01:38
【问题描述】:
在 Numpy 中,假设我有一个维度为 i x j x k 的矩阵 A,以及一个维度为 k x i 的矩阵 B。如何在不使用循环的情况下取回尺寸为 k x i 的产品?
例如:
Let A = [[[1 2],
[3 4]],
[[5 6],
[7 8]]]
B = [[a b],
[c d]]
我想得到:
C = [[a+2c 5b+6d],
[3a+4c 7b+8d]]
我目前的解决方案是
np.diagonal(np.dot(A, B), axis1=0, axis2=2)
但是,问题是我正在处理一个大型数据集(A 和 B 具有巨大的维度)所以np.dot(A, B) 会导致MemoryError。因此,我想找出一种更好的方法来解决这个问题,而无需计算点积。
我已经研究过 einsum 和 tensordot 这样的函数,但我没有找到我需要的东西(或者我可能错过了一些东西)。如果有人可以帮助我,我将不胜感激。谢谢!
【问题讨论】:
-
显示你的尝试
-
J 必须出现在输出形状中。请展示一个不是 2x2 的示例以了解原因。
-
np.diagonal(np.dot(A, B), axis1=0, axis2=2)似乎没有给出预期的输出。检查B= [[1,2],[3,4]],预期输出为[[5,39],[11,53]]。
标签: python numpy matrix vectorization