为了账号安全,请及时绑定邮箱和手机立即绑定

如何提高python中for循环的性能

如何提高python中for循环的性能

胡说叔叔 2021-10-12 17:26:41
我正在用 python 进行大量模拟,模拟系统响应。我目前一直在使用 Runge-Kutta 方案,但偶然发现了另一个我一直在测试的方案。与我的 Runge-Kutta 相比,在 Matlab 中进行测试时,我获得了卓越的性能。但是,当我将其转移到 Python 时,速度明显变慢了。我不确定这是否就是这样,或者我是否可以改进我的编码方式,所以如果可能的话,我很想听听您的一些意见。Matlab中的代码,举例说明:dt = 0.0001;f = randn(1, (60 / dt));ns = length(f);yo = zeros(3,1);P1 = [0; 0.001; 0];F = [1 0.0001 0; 0.001 1 0.0001; 0.001 0 1];y1 = zeros(3, ns);ticfor i = 1:ns    y1(:, i) = P1*f(:, i) + F*yo;    yo = y1(:, i);endtoc其中循环在 0.55-0.61 秒内执行。Python中的代码,举例说明:dt = 0.0001f = np.random.randn(1, int(60 / dt))ns = np.size(f)yo = np.zeros((3))F = np.array([[1, 0.0001, 0], [0.001, 1, 0.0001], [0.001, 0, 1]])P1 = np.transpose(np.array([[0, 0.0001, 0]]))y1 = np.zeros((3, ns), order='F')start_time = time.time()for i in range(ns-1):    y1[:, i] = np.dot(P1, f[:, i]) + np.reshape(np.dot(F, yo), (3))    yo = y1[: , i]print("--- %s seconds ---" % (time.time() - start_time))其中循环在 2.8 -3.1 秒内执行。我可以做些什么来改善这一点吗?感谢您考虑我的问题。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 270 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号