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

时间:2016-08-24 10:55:19

标签: python mongodb hdf5 h5py

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

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

感谢任何建议和帮助。

1 个答案:

答案 0 :(得分:0)

我会继续为这个案例使用字典。我觉得词典做得很好。由于查询将在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()

总的来说,我希望这可以帮到你。