数据交换 - Python和Fortran

py_*_*rks 2 fortran python-2.7

我们正在开发一个科学应用程序,它具有python 2.7中的接口和用英特尔Visual Fortran编写的计算例程.使用python读取源文件,然后只需要将计算所需的数据传递给独立的Fortran算法.计算完成后,数据必须再次由python读取.

使用格式化的文本文件似乎花费太长时间而且效率不高.此外,我们希望有一个标准的中间格式.可以有大约20个阵列,这些是巨大的(如果写入格式化文本,文件大约500 MB).

Q1.在类似的情况下,Python和Fortran数据交换是必要的.什么是推荐的互动方式?(例如:写一个中间数据被其他读取调用Fortran从内的Python 使用numpy的创建兼容阵列等)

Q2.如果建议编写中间结构,什么格式有利于数据交换?(我们遇到过CDF,NETCdf,二进制流,但到目前为止还没有尝试过.)

rth*_*rth 7

在Python中包装Fortran代码的标准方法是f2py(包含在numpy模块中).

对于中间结果的输出,可以使用多种格式,这实际上取决于您的要求.

  • 对于简单的数据集,来自python,只需使用numpy.save.
  • 如果您的数据集变大,可以使用HDF5,例如Python和Pyran中的PyTableslibhdf5.
  • 否则,如果您不想将代码链接到外部库,则从Fortran编写并解析的自定义二进制文件numpy也可以正常工作.