如何在Python中取消引用HDF5引用?

时间:2016-02-18 19:01:52

标签: python hdf5

有时我从HDF5文件中获取以下数组:

val1 = {ndarray} [<HDF5 object reference> <HDF5 object reference> <HDF5 object reference>]

如果我尝试使用HDF5文件对象取消引用它

f[val[0]]

我收到错误

Argument 'ref' has incorrect type (expected h5py.h5r.Reference, got numpy.object_)

1 个答案:

答案 0 :(得分:2)

在尝试以另一种形式回答基本为the same question的内容时,我遇到了这个问题。包含对其他对象的引用的数据集在HDF5中有点尴尬,但实际上您可以以非常简单的方式阅读它们。我们的想法是获取引用对象的名称,然后直接从文件中读取该对象。

给定单个HDF5引用ref和文件file,您可以通过执行以下操作返回引用数据集的名称:

>>> name = h5py.h5r.get_name(ref, file.id)

然后像往常一样阅读实际数据集本身:

>>> data = file[name].value # ndarray with the data in it.

因此,要读取所有引用的数据集,只需在整个引用数据集中map此过程。