如何为 .hdf5 类型创建特定类型的对象?

How to create a specific type of object for type .hdf5?

我的问题是关于为 .hdf5 文件创建对象类型或文档。该对象将具有三个属性,一个 id,一个 user_id 和一个大小为 64 的布尔数组。我必须创建它们大约 10000000(千万)个。

想象一下 mongodb,我必须那样使用它们。我必须查询某些特定的 user_id'ed 对象以及所有对象。

感谢任何建议和帮助。

对于这种情况,我会继续使用字典。我觉得字典确实可以很好地扩展。由于查询将在 user_id 上进行,因此我会将其作为键。

结构会像

{ 
    'user_id-xyz': {
        'id':'id-1212',
        'boolarray':[True,False,..],

    },
    'user_id-abc':{
        ...
    }
}

为了实现这一点,我可能会选择 numpy 自定义数据类型。

element = np.dtype([('id', 'i16'), ('boolarray', 'b',(64,1))])
f = h5py.File('foo.hdf5','w')
dset = f.create_dataset("blocky", (1000000,), dtype='V79') # 64(bools)+15(for id)
grp = f.create_group("user_id-xyz")
# create subgroups for each id.
subdataset = grp.create_dataset('ele',(1,),dtype=element) 

# test of membership.
'user_id-xyz' in f
# retrieval
f.get('user_id-xyz')
# all keys.
f.keys()

总的来说,希望对您有所帮助。