【问题标题】:How to dereference HDF5 references in Python?如何在 Python 中取消引用 HDF5 引用?
【发布时间】:2016-05-31 03:14:08
【问题描述】:

有时我会从我的 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_)

【问题讨论】:

    标签: python hdf5


    【解决方案1】:

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

    给定一个 HDF5 引用 ref 和一个文件 file,您可以通过以下方式返回引用数据集的名称:

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

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

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

    所以要读取所有引用的数据集,只需map 整个引用数据集的这个过程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 2014-05-15
      • 2010-09-22
      • 1970-01-01
      • 2016-11-18
      • 2017-03-11
      • 2013-09-15
      相关资源
      最近更新 更多