使用h5py将外部原始文件链接到hdf5文件

时间:2015-08-24 17:56:55

标签: python numpy h5py hdf

我使用二进制平面文件工作很多,他们需要保持当前格式以使用遗留代码,但我还希望能够使用属性和组的HDF5文件的一些功能。我在HDF5 documentation 5.5.4中看到可以链接外部数据。有没有直接的方法来创建HDF5文件并使用h5py添加外部链接?

1 个答案:

答案 0 :(得分:0)

假设您的二进制平面文件包含 10000 float32 在文件中的某个 OFFSET 字节,并且您想将它们读回形状为 (10, 20, 50) 的 3D 数组数据,下面的代码应该可以完成这项工作

input_file = "filename.raw"
output_file = "filename.h5"
offset = OFFSET
shape = (10, 20, 50)
size = 4 * shape[0] * shape[1] * shape[2] # 4 bytes per element

import h5py
import numpy
h5 = h5py.File(output_file, "w")
dataset = h5["/"].create_dataset("data",
                                 shape=shape,
                                 dtype=numpy.float32,
                                 external=((input_file, offset, size),))
h5.flush()
h5.close()

external 关键字需要多种形式的元组(文件名、偏移量、大小),以便创建的数据集应该使用不同文件或偏移量的部分构建。