在Python中读取具有特定序列的二进制文件

时间:2016-08-11 07:44:20

标签: python pandas numpy binary

我有一些具有特定序列的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增加的索引z1 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] 

1 个答案:

答案 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