我们正在开发一个科学应用程序,它具有 python 2.7 中的接口(interface)和用 Intel Visual Fortran 编写的计算例程。读取源文件是使用 python 完成的,然后只需要将计算所需的数据传递给独立的 Fortran 算法。计算完成后,数据必须再次由 python 读取。
使用格式化的文本文件似乎耗时太长且效率不高。此外,我们希望有一个标准的中间格式。可以有大约 20 个数组,而且这些数组很大(如果写入格式化文本,文件大约有 500 MB)。
Q1。在需要 Python 和 Fortran 数据交换的类似情况下。推荐的交互方式是什么? (例如:编写一个中间数据以供其他 或 从 Python 中调用 Fortran 或 使用 numpy 创建兼容数组 或 等。 )
Q2。如果建议编写中间结构,什么格式适合数据交换? (我们遇到了 CDF、NETCdf、二进制流,但到目前为止还没有尝试过。)
最佳答案
在 Python 中包装 Fortran 代码的标准方法是使用 f2py
(包含在 numpy
模块中)。
对于中间结果的输出,可以使用多种格式,这实际上取决于您的要求。
- 对于来自 python 的简单数据集,只需使用
numpy.save
. - 如果您的数据集变大,则使用 HDF5,例如 PyTables可以使用 Python 语言和 Fortran 语言的
libhdf5
。 - 否则,如果您不想将您的代码链接到外部库,则从 Fortran 编写并使用
numpy
解析的自定义二进制文件也可以工作。
关于python-2.7 - 数据交换——Python 和 Fortran,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30736698/