如何使用numpy从二进制文件中读取特定字段?

时间:2016-08-12 19:55:48

标签: python numpy file-io

我正在阅读的二进制文件包含一个数据类型数组:

dt_particles = np.dtype([('id', np.int64), \
                         ('x', np.float32), \
                         ('y', np.float32), \
                         ('z', np.float32), \
                         ('vx', np.float32), \
                         ('vy', np.float32), \
                         ('vz', np.float32)])

我可以使用:

读取整个dt_particles元素数组
numpy.rec.fromfile(FILE_OBJ, dtype=dt_particles, shape=NUM_ELEMENTS)

如何从二进制文件中只读取id字段并跳过其他字段?

1 个答案:

答案 0 :(得分:0)

我还没有使用fromfile,但我怀疑是否可以阅读所选字段。显然,它使用dtype来确定元素的布局和间距。 usecols中没有像genfromtxt这样的参数来读取所选字段或列。并且没有办法说,读取8个字节,并跳过下一个6 * 4字节。

只需阅读整个内容并选择所需的字段即可。无论如何,它必须阅读整个文件。