我有一个HDF5文件,其中包含一个带有列名的2D表。当我掠夺这个名为results
的对象时,它会在HDFView中显示出来。
事实证明results
是一个"复合数据集",一个一维数组,其中每个元素都是一行。以下是HDFView显示的属性:
我可以处理这个对象,让我们称之为res
。
列名称为V2pt
,R2pt
等。
我可以将整个数组作为数据读取,我可以用
读取一个元素res[0,...,"V2pt"].
这将返回列V2pt
第一行中的数字。用0
替换1
将返回第二行值等
如果我知道colunm名称是先验,那就是。但我不是。
我只是希望获得整个数据集和的列名。我怎么能这样做?
我发现HDF5文档中的HDF5 documentation中有一个get_field_info
函数,但我在h5py中找不到这样的函数。
我搞砸了吗?
更好的解决方案是将此表作为pandas DataFrame读取......
答案 0 :(得分:11)
这在h5py中很容易实现,就像Numpy中的复合类型一样。
如果res
是数据集的句柄,res.dtype.fields.keys()
将返回a
所有字段名称的列表。
如果您需要了解具体的dtype
,res.dtype.fields['V2pt']
之类的内容会提供。{/ p>