【发布时间】:2022-12-13 00:58:59
【问题描述】:
我有两个输入数组和一个输出数组,如下所示:
M=np.array([[1,2,3],[3,4,5],[6,7,8]])
u=np.array([[1,2,3],[4,5,7],[2,4,9]])
res=np.zeros((3,))
我想做以下计算:
for i in range(3):
res[i]=np.matmul(np.matmul(u[0:,i].T,M),u[0:,i])
#res=array([ 231., 594., 1957.])
我可以不做 for 循环就做吗,因为 for 循环在较大的矩阵中会花费很多时间
所以目标是实现更快的方法
【问题讨论】:
-
没有更快的方法。加快速度的唯一方法是并行计算并为每个条目创建一个线程。
-
我不同意,如果你正确地使用矢量化,你可以做得更快!
标签: numpy multidimensional-array matrix-multiplication array-broadcasting vector-multiplication