6

我经常使用二进制平面文件,它们需要保持当前格式才能处理遗留代码,但是我也希望能够使用带有属性和组的 HDF5 文件的一些功能。我在 HDF5文档 5.5.4中看到可以链接外部数据。是否有直接的方法来创建 HDF5 文件并使用 h5py 添加外部链接?

4

1 回答 1

0

假设您的二进制平面文件在文件中的某个字节偏移处包含 10000 个 float32,并且您想将它们读回形状为 (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创建的数据集应该使用不同文件或偏移量的部分构建的情况下,关键字需要多个形式为(文件名、偏移量、大小)的元组。

于 2021-04-30T11:36:35.753 回答