检索给定文字名称的hdf5索引

时间:2016-11-18 04:24:27

标签: python hdf5 h5py

我有一个带3个键的hdf5数据库(feature,image_ids,index)。 image_ids和index每个都有1000个条目。

问题是,虽然我可以通过以下方式获得第10个image_ids:

dbhdf5 ["image_ids"="image001.jpg"]
or 
dbhdf5 ["image_ids"]["image001.jpg"]
or
dbhdf5 ['index']['image001.jpg']

我想反过来,即通过传递图像名称来查找索引。类似的东西:

:%s/^\s\{4\}//g

我已经尝试了我能想到的每一个变体,但似乎无法找到一种方法来检索图像的索引,因为它是id。我得到的错误比如“只允许化合物类型的字段名称”

1 个答案:

答案 0 :(得分:0)

你正在尝试的是不可能的。 HDF5通过存储数组来工作,这些数组可以通过数字索引访问。

假设您还管理文件的创建,您可以将数据存储在单独的命名数组中:

\index
   \-- image001.jpg
   \-- image002.jpg
   ...
\features
   \-- image001.jpg
   \-- image002.jpg
   ...

所以你可以通过名字访问它们:

dbhdf5['features']['image001.jpg']

如果文件是由其他人生成的,则必须自己存储密钥,例如使用dict:

lookup = {}
for i, key in enumerate(dbhdf5['image_ids'][:]):
    lookup[key] = i

并通过此间接访问它们

dbhdf5['index'][lookup['image001.jpg']]