我试图读取一个fortran文件,其中的头是整数,而实际数据是32位浮点。使用numpy的fromfile('mydatafile', dtype=np.float32)
它在整个文件中读取为float32,但是我需要在int32中为输出文件提供头。它使用scipy的FortranFile读取标题:
f = FortranFile('mydatafile', 'r')
headers = f.read_ints(dtype=np.int32)
但当我这么做的时候:
^{pr2}$它返回一个空数组。我知道它不应该是空的,因为使用numpy的fromfile它会读取所有的数据。奇怪的是,scipy方法适用于我数据集中的其他文件,但这一个却不行。也许我不明白numpy和scipy的两种读取方法的区别。有没有一种方法可以在用任何一种方法读取文件时隔离头(dtype=np.int32
)和数据(dtype=np.float32
)?在
np.fromfile接受一个“count”参数,该参数指定要读取多少项。如果事先知道头中的整数个数,那么在不进行任何类型转换的情况下,一个简单的方法就是将头作为整数读取,然后将文件的其余部分作为浮点读取:
@davidtreveyan有一个非常好的方法。另一种方法是将
fortranfile
包与struct
结合使用。但{scipy都不是理想的。在至少用这种方法可以读取混合类型的数据。下面是一个例子:
您可以使用
pip install fortranfile
安装它。struct
是标准的,(un)pack格式是here。在相关问题 更多 >
编程相关推荐