我有一些具有特定序列的32x32x8192
二进制数据文件,我想知道
我如何在Python 3x.
中读取它。该文件由Nx × Ny × Nz
个数字组成(浮点单精度)。
数字序列对应于indexes x, y and z
,它们分别从1 to Nx, Ny and Nz
开始逐渐增加
变化最快的索引为z
,后跟y
,变化最慢的索引为x
。
也就是说,序列中的第一个Nz
数字对应于从x = 1, y = 1
增加的索引z
和1 to Nz
。
np.fromfile("turbine_32x32x8192.bin", dtype=float, count=10, sep="")
的数据样本:
[ -8.26325563e+02 -7.41263867e+00 -1.52541103e+01 -1.83999292e+03
-7.53629982e+03 -3.43120688e+05 -1.88674962e+04 -1.81482768e+00
-4.13878029e+03 -8.29483377e+05]
答案 0 :(得分:0)
import struct
data = open(filename, 'rb').read()
def chunk(i, j):
at = i * 32 + j
return data[at * (8192 * 4) : (at + 1) * (8192 * 4)]
a = [list(struct.unpack('8192f', chunk(i, j))) for i in range(32) for j in range(32)]
结果将在a
。