Numpy 函数的 Fortran 等价物

Fortran equivalent of Numpy functions

由于速度限制,我正在尝试将某些内容从 Python 翻译成 Fortran。 (这样我就可以在上面使用 f2py。)

问题是代码包含许多 Fortran 90 中不存在的 NumPy 函数。所以我的问题是:是否有一个 Fortran 库至少实现了 Fortran 中的一些 NumPy 功能?

我在代码中要用到的函数一般都很简单,所以我可以手写。但是,我不想在这里重新发明轮子,特别是因为我在 Fortran 方面没有那么多经验,而且我可能不知道一些重要的警告。

无论如何,这是我需要的一些功能的列表。

np.mean (with the axis parameter)
np.std  (with the axis parameter)
np.roll (again with the axis parameter)
np.mgrid
np.max  (again with axis parameter)

此时任何事情都有帮助。我不指望为所有这些都找到替代品,但如果其中一些至少已经存在,那就太好了。

我发现 gfortran 中的过程的内在列表作为这里的第一个参考很有用 https://gcc.gnu.org/onlinedocs/gfortran/Intrinsic-Procedures.html#Intrinsic-Procedures

  1. np.mean(带轴参数)
    见总和。它有一个轴参数。结合大小它可以输出平均值:

    result = sum(data, dim=axis)/size(data, dim=axis)
    

    这里result比data少一维

  2. np.std(带轴参数)

  3. np.roll(再次使用轴参数)
  4. np.mgrid
  5. np.max(同样带有轴参数)
    参见 maxval,它有一个 dim 参数。

我不知道与 NumPy 等效的 Fortran。 Fortran 基于标准的数组功能使得 "base" 库尚未出现。不过有几项举措:

  1. https://github.com/astrofrog/fortranlib "Collection of personal scientific routines in Fortran"
  2. http://fortranwiki.org/ "The Fortran Wiki is an open venue for discussing all aspects of the Fortran programming language and scientific computing."
  3. http://flibs.sourceforge.net/ "FLIBS - A collection of Fortran modules"
  4. http://www.fortran90.org/ 现代 Fortran 的通用资源。包含一个"Python Fortran Rosetta Stone"