将矩阵与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)
答案 0 :(得分:0)
好像您想要点积:
new_arr = np.dot(arr, A.T)
其中arr
和A
是numpy数组:
arr = np.array([[1,1,1], [1,1,1],[1,1,1]])
A = np.array([[2,2, 2],[2,2,2]])
结果:
array([[6, 6],
[6, 6],
[6, 6]])
根据您的修改,所需的点积可能是:
new_arr = np.dot(A, arr).T
两者都返回相同的结果,但计算方法不同。