我有一个带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。我得到的错误比如“只允许化合物类型的字段名称”
答案 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']]