优化嵌套的for循环

我正在尝试避免使用for循环来运行我的计算。但是我不知道该怎么做。我有一个w形状矩阵(40,100)每条线一次都保持波浪的位置t例如,第一行w[0]是初始条件(也是w[1]出于我将要说明的原因)。

为了计算下一行元件我使用,对于每一个tx上形状范围:

w[t+1,x] = a * w[t,x] + b * ( w[t,x-1] + w[t,x+1] ) - w[t-1,x]

其中ab是基于方程解的一些常量(它其实并不重要), ,a = 2(1-r)b=r r=(c*(dt/dx))**2哪里c的波速和dt方向dx增量有关xt

有什么办法可以避免for循环:

for t in range(1,nt-1):
    for x in range(1,nx-1):
      w[t+1,x] = a * w[t,x] + b * ( w[t,x-1] + w[t,x+1] ) - w[t-1,x]

ntnxw矩阵的形状

tr

我假设您正在设置w[:,0]w[:-1]预先设置(某些常量?),因为在循环中看不到它。如果是这样,则可以消除for x对这部分代码进行循环矢量化处理:

for t in range(1,nt-1):
    w[t+1,1:-1] = a*w[t,1:-1] + b*(w[t,:-2] + w[t,2:]) - w[t-1,1:-1]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章