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

7
有时我会从我的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个回答

5
我在回答另一个问题时遇到了这个问题,实际上是另一种形式的同样的问题。HDF5中包含对其他对象的引用数据集有点棘手,但实际上你可以以相当直接的方式读取它们。思路是获取所引用对象的名称,然后直接从文件中读取该对象。给定单个HDF5引用ref和文件file,你可以通过执行以下操作返回所引用数据集的名称:
>>> name = h5py.h5r.get_name(ref, file.id)

然后像往常一样,只需阅读实际数据集本身即可:
>>> data = file[name].value # ndarray with the data in it.

因此,要阅读所有引用的数据集,只需将此过程map到整个引用数据集上即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接