快速将NumPy数组加载到Fortran中

3

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

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

我意识到解决这个问题的另一个方法是完全摒弃Python,并在Fortran中创建数据数组,但由于我在Fortran方面几乎是个新手,所以我试图尽量减少我需要使用它的东西。

2个回答

7

这取决于你的数据结构,但如果只有一个或几个数组,你不需要任何外部库(我对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

而那就是全部。

你不应该转置数组a并将其转储,即a.T.tofile("a.bin")吗? - ziky
你为什么这样认为?绝对不是。注意 F 的顺序。 - Vladimir F Героям слава
哈,你说得对。我使用了 pandas.read_csv 加载数据,然后在转储之前必须进行转置。谢谢。 - ziky

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接