我已经看过这个Q/AIntent of this Fotran77 code,我几乎把下面的Fortran77风格的代码转换成python3.x,但我有一个疑问,I=I+1应该放在Python版本的哪个位置。正如在相关问题的评论中提到的,我已经做了一致性测试,结果相差2分。这就是问题所在。在
i = 0
500 continue
i = i +1
if (i .le. ni) then
if (u(i,j-1) .gt. -9999.) then
r(1,j) = u(i,j-1)
go to 600
else
missing = i
go to 500
end if
end if
600 continue
这是我的Python版本
^{pr2}$我把递增计数器放在正确的位置了吗?在
不建议直接翻译,因为您丢失了python的许多高效编码特性。在
要在python中正确地实现这一点,您应该1)认识到python的0-index约定,2)认识到fortran是column major,python是row major,因此应该颠倒所有多维数组的索引顺序。在
如果您这样做,可以写入循环:
我假设我们不需要missing的数值。 如果你需要它,你会得到这样的东西:
^{pr2}$您也可以使用
next
,这会更快,但是处理丢失的条件会变得更棘手。在相关问题 更多 >
编程相关推荐