我使用二进制平面文件工作很多,他们需要保持当前格式以使用遗留代码,但我还希望能够使用属性和组的HDF5文件的一些功能。我在HDF5 documentation 5.5.4中看到可以链接外部数据。有没有直接的方法来创建HDF5文件并使用h5py添加外部链接?
答案 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
关键字需要多种形式的元组(文件名、偏移量、大小),以便创建的数据集应该使用不同文件或偏移量的部分构建。