【发布时间】:2018-11-15 22:28:26
【问题描述】:
将矩阵与 numpy 向量数组相乘的最快方法是什么?我需要将矩阵 A 乘以 1000 个向量列表中的每个向量。使用 for 循环花费的时间太长,所以我想知道是否有办法一次将它们全部相乘?
例子:
arr = [[1,1,1], [1,1,1],[1,1,1]]
A=
[2 2 2]
[2 2 2]
所以我需要为 arr 中的每个 v 乘以 Av。结果:
arr = [[6,6], [6,6], [6,6]]
有没有比以下更快的方法:
new_arr = []
for v in arr:
sol = np.matmul(A, v)
new_arr.append(sol)
【问题讨论】:
-
什么样的乘法?跨行元素?
-
请提供具有预期输出的示例数据。
-
您的术语有点模糊。
A的形状是什么。另一件事是列表还是数组?如果数组是什么dtype? “向量”的形状是什么? -
matmul(和dot)的基本规则是A的最后一个维度与B的倒数第二个(或v的唯一一个)。你试过matmul(A, arr.T)吗? -
如果
A是 (2,3) 并且arr是 (4,3), it should be clearer that you want to pair the 3's, and get a (2,4) or (4,2) result. To get that a transpose of eitherA` 或arr是必需的。
标签: python python-3.x numpy scipy