现在我正在尝试将 fortran 代码重写为 python 脚本。
在原始的 fortran 代码中,它将实数声明为:
real a(n),b(n),D(64)
如何在 python 代码中转换此 D(64)? a(n), b(n) 是我使用的数据中的值,但 D(64) 不是。 我需要将它放入我用 f2py 包装的子模块 fortran 代码中。 该子模块代码如下所示。 M 只是一个整数,将在主代码中定义。
subroutine multires (a,b,M, D)
implicit none
real a(*),b(*),D(*)
.
.
if(nw.gt.1) D(ms+1)=(sumab/nw)
请您参考如下方法:
如果您的代码正在寻找良好的性能,stay away from python lists .相反,您想使用 numpy 数组。
import numpy as np
D = np.zeros((64), np.float32)
这将构造一个 numpy ndarray,其中 64 个元素的 32 位实数初始化为 0。使用这些类型的数组而不是列表可以大大提高 python 代码相对于列表的性能。它们还可以让您更好地控制类型以实现互操作性,并且您会产生更少的开销,尤其是当您使用 cython 时。
