Skip to main content
 首页 » 编程设计

python之避免在 Python 中嵌套 for 循环

2025年05月04日22qlqwjy

我有一个维度为 1024 * 307200 的矩阵 A 和维度为 1024 * 50 的另一个矩阵 B >。我在嵌套的 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 的每个值,我都使用相同的函数。

有什么办法可以优化上面的循环吗?

请您参考如下方法:

也许您可以用这些矩阵运算替换内部循环和您的函数?

for i in range(307200): 
    temp = A[:,i,np.newaxis] - B[:] 
    C[i,:] = np.linalg.norm(temp, axis=0) 

对于较小的阵列,我的运行时间缩短了大约 20 倍。或许你收获更多。无论如何,请确保您收到好的结果(在较小的设备上)。