快速将 numpy 数组加载到 Fortran 中

Loading numpy arrays into Fortran quickly

我目前正在开发一个 Fortran 程序,它需要一个大数据文件作为输入。此数据文件是使用 Python 创建的,我目前正在使用 np.savetxt() 函数将其保存为人类可读的格式。

然而,这个文件的大小非常大(至少1.5GB的磁盘space),所以读取文件需要很长时间。我认为使用 np.save(或者 pickle 它?)以二进制格式保存数据数组可能更容易,但是我不知道如何将这个文件读入我的 Fortran 程序 - 有没有一个简单的如何做到这一点?

我意识到另一种解决方案是完全删除 Python 并在 Fortran 中创建数据数组,但是由于我接近 Fortran 的完全初学者,我正在尝试尽量减少我需要它做的事情。

在我的日常工作中,为了计算和可视化目的,我 运行 在 Fortran 和 python 之间进行了非常大的模拟切换。我建议在这两个系统中都使用 netcdf 库,netcdf 是一种在两个系统之间传输并控制文件大小的优秀格式。下面提供了一些很好的链接

Python : http://unidata.github.io/netcdf4-python/

语言:http://www.unidata.ucar.edu/software/netcdf/examples/programs/

这取决于你的数据结构,但如果它只是一个或几个数组,你不需要任何外部库(我对 NetCDF 的所有麻烦印象不深)。

import numpy as np
a = np.zeros([10,10], order="F")
a.tofile("a.bin")

  use iso_fortran_env
  real(real64) :: a(10,10)

  open(newunit=iu,file="a.bin",access="stream",status="old",action="read")
  read(iu) a
  close(iu)
end

仅此而已。