Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多个numpy数组的矩阵乘法_Python_Python 3.x_Numpy_Scipy - Fatal编程技术网

Python 多个numpy数组的矩阵乘法

Python 多个numpy数组的矩阵乘法,python,python-3.x,numpy,scipy,Python,Python 3.x,Numpy,Scipy,将矩阵与向量的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

将矩阵与向量的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)

似乎您想要一个点产品:

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]])
根据您的编辑,您想要的dot产品可能是:

new_arr = np.dot(A, arr).T

两者都返回相同的结果,但计算结果不同。

哪种乘法?跨行元素?请提供具有预期输出的示例数据。您的术语有点模糊。
A
的形状是什么。另一个是列表还是数组?如果是数组,那么数据类型是什么?“向量”的形状是什么?
matmul
(和
dot
)的基本规则是
A
的最后一个维度与
B
(或
v
)中的第二个到最后一个维度配对。您是否尝试过
matmul(A,arr.T)
?如果
A
是(2,3)而
arr
是(4,3)
,那么您应该更清楚地想将3配对,并得到(2,4)或(4,2)结果。要获得
a`或
arr
的转置是必需的。在这种情况下,a.T是什么?使用numpy对
a
进行转置。根据两个矩阵的内容,您需要的也可能是
np.dot(a,arr).T
。根据你的编辑,这可能是你想要的。哦,好的。这是有道理的。基本上我有一个50 x 30000的矩阵。我需要将这个矩阵乘以numpy数组中的每个向量。有500个dim=30000的向量。这仍然是正确的吗?噢,天哪。非常感谢你!我完全颠倒了我的两个矩阵。现在可以了:)