【发布时间】:2021-04-11 11:38:55
【问题描述】:
我正在使用 numpy 执行矩阵乘法,但我不知道如何利用 numpy 进行 3d 矩阵乘法。
假设我有一个 3x3 矩阵 a,我将它乘以一个 3x1 向量 b。这将给出一个 3x1 向量 c。
这是在 numpy 中完成的:
# (3, 3) * (3, 1) -> (3, 1)
c = np.matmul(a, b)
好的,现在我想对本质上是 2500 个 3x3 矩阵的 3d 矩阵执行类似的操作。现在我正在做的事情是:
# (2500, 3, 3) * (2500, 3, 1) -> list of (3, 1) vectors with length 2500
C = [np.matmul(a, b) for a, b in zip(A, B)]
返回 (3, 1) 个向量的列表。
我宁愿不循环,而是充分利用 numpy 的矢量化和矩阵/张量产品。有没有什么手术可以做...
# (2500, 3, 3) * (2500, 3, 1) -> (2500, 3, 1)
np.<function>(A, B, <args>)
我看过关于使用 np.tensordot 的资料,但我不知道如何设置坐标轴。
np.tensordot(A, B, axes=???)
【问题讨论】:
标签: python numpy matrix linear-algebra