gpt4 book ai didi

Python:使用 numpy 或 scipy 读取 Fortran 二进制文件

转载 作者:太空狗 更新时间:2023-10-30 03:00:10 24 4
gpt4 key购买 nike

我正在尝试读取一个 Fortran 文件,其标题为整数,然后实际数据为 32 位 float 。使用 numpy 的 fromfile('mydatafile', dtype=np.float32) 它将整个文件读取为 float32,但我需要将标题放入 int32 中以用于我的输出文件。使用 scipy 的 FortranFile 它读取标题:

f = FortranFile('mydatafile', 'r')
headers = f.read_ints(dtype=np.int32)

但是当我这样做的时候:

data = f.read_reals(dtype=np.float32)

它返回一个空数组。我知道它不应该为空,因为它使用 numpy 的 fromfile 读取所有数据。奇怪的是,scipy 方法适用于我数据集中的其他文件,但不适用于这个文件。也许我不理解 numpy 和 scipy 的两种读取方法之间的区别。在使用任何一种方法读取文件时,是否有办法隔离 header (dtype=np.int32) 和数据 (dtype=np.float32)?

最佳答案

np.fromfile采用“计数”参数,指定要读取的项目数。如果您事先知道 header 中整数的数量,那么无需任何类型转换即可执行所需操作的简单方法就是将 header 读取为整数,然后将文件的其余部分读取为 float :

with open('filepath','r') as f:
header = np.fromfile(f, dtype=np.int, count=number_of_integers)
data = np.fromfile(f, dtype=np.float32)

关于Python:使用 numpy 或 scipy 读取 Fortran 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30307305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com