【发布时间】:2018-03-04 09:45:02
【问题描述】:
我有一个矩阵A,维度为1024 * 307200,另一个矩阵B,维度为1024 * 50。我在嵌套的 for 循环中对这两个矩阵执行 L2_norm 以得到我的最终矩阵 C 为 307200 * 50。
您可以在下面找到代码:
for i in range(307200):
for l in range(50):
C[i,l] = numpy.linalg.norm(A[:,i] - B[:,l]))
如您所见,我的变量的维度很大,这会导致非常高的延迟。我想避免这种嵌套循环,因为对于i 和l 的每个值,我使用的是相同的函数。
有没有办法优化上面的循环?
【问题讨论】:
-
“相同的功能”不是决定性因素。假设您想将所有元素设置为
1:那么您仍然必须遍历所有元素。但也许你可以把它变成一个generator。 -
您可以将 i 和 l 制作成包含给定范围内的整数的 numpy 数组,初始化所有结果的空数组,并使用 numpy 向量化通过 i 和 l 填充空数组的值。
标签: python numpy matrix nested-loops