我正在尝试读取一个 fortran 文件,其标题为整数,然后实际数据为 32 位浮点数。使用 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 的两种读取方法之间的区别。有没有办法隔离标题(dtype=np.int32
)和数据(dtype=np.float32
)使用任一方法读取文件时?
np.fromfile采用“count”参数,指定要读取的项目数。如果您提前知道标头中整数的数量,则无需进行任何类型转换即可执行所需操作的简单方法是将标头读取为整数,然后将文件的其余部分读取为浮点数:
with open('filepath','r') as f:
header = np.fromfile(f, dtype=np.int, count=number_of_integers)
data = np.fromfile(f, dtype=np.float32)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)