python - 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 循环会从中受益。
任何建议将不胜感激!
谢谢!
解决方案
推荐阅读
- python - 字符变量的缺失值处理
- python - 如果满足某些条件,您如何搜索数据帧的每一行并将值从该数据帧复制到另一个数据帧?
- modelsim - modelsim 提示通配符建议/自动完成消失了
- vba - 如何评估包含列名的字符串?
- python - Cythonizing 一个 Django 项目
- node.js - 使用 busboy 库在 Lambda 中上传文件时缺少数据?
- javascript - 如何通过显示 OBJ 来解决此 A-frame Angular 问题
- regex - Nginx 位置正则表达式用于处理 /sub/directories 中多个 WordPress 站点的永久链接
- modulo - 理解数学与编程中的 Mod 运算符
- lisp - 为什么 TIME 报告的字节数因不同的调用而不同?