python - 在 python 中加速欧拉数值方案

标签 python performance numpy cython

假设我有一个如下所示的更新方案:

import numpy as np

N = 1000
dt = 0.01

x = np.zeros(N)
x[0] = 0.5

for i in xrange(1, N):

    rand = np.random.normal(loc=0.,scale=1.)

    x[i] = x[i-1]*(1 + dt + np.sqrt(dt)*rand)

加速这种形式的代码的最佳策略是什么,当前数组元素需要前一个数组元素来进行计算?

我试图将其放入矢量化形式,但对于如何使用尾随数组元素来更新当前数组元素,我有点困惑。

如果有更好的不涉及矢量化的解决方案,我也愿意接受。

最佳答案

试试这个:

x = np.random.randn(1000)
x += 1
x[0] = 0.5
y = np.cumprod(x)

答案为y

关于python - 在 python 中加速欧拉数值方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32867018/

相关文章:

python - 执行一个命令后 paramiko ssh channel 关闭 - Python

python - 如何使用sqlalchemy调用postgresql存储过程?

Python 3 : subprocess. run ('mv' )使目标保持打开状态

python - Cloud9 IDE 使用 venv 运行 python3

sql - 为什么这个 MySQL 更新会永远持续?

python - numpy:通过广播摆脱 for 循环

python - 填充 numpy 数组时内存爆炸

algorithm - 内存斐波那契的时间复杂度

java - 当 Package Explorer 固定打开时,Eclipse 恢复后需要很长时间才能重新绘制自身

python - 将图像(np.array)转换为二值图像