【问题标题】:Retrieving hdf5 index given literal name检索给定文字名称的 hdf5 索引
【发布时间】:2017-04-01 20:21:43
【问题描述】:

我有一个带有 3 个键(特征、image_ids、索引)的 hdf5 数据库。 image_ids 和 index 各有 1000 个条目。

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

dbhdf5 ["image_ids"][10]
>>> u'image001.jpg'

我想做相反的事情,即通过传递图像名称来查找索引。比如:

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

我已经尝试了所有我能想到的变体,但似乎无法找到检索图像索引的方法,因为它是 id。我收到诸如“仅允许复合类型的字段名称”之类的错误

【问题讨论】:

标签: python hdf5 h5py


【解决方案1】:

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

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

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

因此您可以通过名称访问它们:

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

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

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

并通过此间接访问它们

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2018-02-11
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多