python-2.7 - 数据交换——Python 和 Fortran

标签 python-2.7 fortran

我们正在开发一个科学应用程序,它具有 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/

相关文章:

oop - 如何在抽象派生类型中设计 PRIVATE OVERRIDABLE 过程?

python-2.7 - gspread 输入前面有单引号

fortran - 如何以可移植的方式保持 Fortran MPI 程序的精度?

Python 带变量的三引号字符串

获取 pandas 数据框中元素的序列相关性的 Pythonic 方法

c - 如何在 Fortran 中读取在 C 中可读的二进制文件

gcc - 如何编译lapack,以便在安装octave的过程中可以正确使用?

c++ - 将 Fortran 77 函数传递给 C/C++

python-2.7 - Python 2.7 : Self works as positional but not as keyword argument

python - 用列表中的一项替换字符串中的一项