0
我的问题是关于为.hdf5文件创建对象类型或文档。该对象将具有三个属性,一个id,一个user_id和一个大小为64的布尔数组。我必须创建它们大约10000000(1000万)个。如何为.hdf5类型创建特定类型的对象?
想象一下mongodb,我必须像那样使用它们。我必须针对某些特定的user_id对象以及所有这些对象进行查询。
任何建议和帮助表示赞赏。
我的问题是关于为.hdf5文件创建对象类型或文档。该对象将具有三个属性,一个id,一个user_id和一个大小为64的布尔数组。我必须创建它们大约10000000(1000万)个。如何为.hdf5类型创建特定类型的对象?
想象一下mongodb,我必须像那样使用它们。我必须针对某些特定的user_id对象以及所有这些对象进行查询。
任何建议和帮助表示赞赏。
我会继续前进,并为这种情况使用字典。我觉得字典的扩展很好。由于查询将在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()
总的来说,我希望这可以帮助你。
好吧,但我如何存储这些对象?据我所知hdf5使用numpy数组来存储。 –
好的。我没有真正注意到h5py标签。但是,看看文档,我会使用user_id作为一个组。在那里我会有一个布尔阵列。前n个数字代表id。 id的大小是多少? – Vasif
2^10或2^15最有可能。 –