有时我从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_)
答案 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
此过程。