首页 > 解决方案 > python 如何使用向量化而不是for循环来提高效率?

问题描述

我的代码运行时间一直有问题,因为它花费的时间太长。我想这是因为我正在使用 for 循环,这是我在 MATLAB 中习惯使用的,其中for 循环似乎比 Python 中更快。我一直在尝试使用NumPy向量化方法来代替,因为我读过这在效率方面更好。但是,我似乎在实现这一点时遇到了问题。我非常感谢有关如何执行此操作的任何指导。

我正在尝试执行此操作的循环是

        for i in range(100000):
         theta = theta_rec[:][i]
         A = np.zeros((50,50))

          for k in range(50):
            for j in range(50):
              A[k,j] = math.sin(theta[j] - theta[k])

          B = -1 * np.array(sum(A))
          d_theta = 0.001*(5 + B)
          theta[(i+1),:] = theta_rec[i,:] + d_theta

          for m in range(50):
            D[(i+1),m] = theta_rec[(i+1),m]%(2.0*math.pi)

其中 theta_rec 是一个 100001x50 数组。正如您所看到的,这种深度嵌套的 for 循环对运行时不利,并且是我代码中的瓶颈。

换句话说,我想用某种 NumPy 矢量化函数替换这个 for 循环,因为这将提高运行时性能。特别是,我认为内部 2 循环会从中受益。

任何建议将不胜感激!

谢谢!

标签: pythonarraysperformancenumpyloops

解决方案


推荐阅读