2016-08-24 107 views
0

我的問題是關於爲.hdf5文件創建對象類型或文檔。該對象將具有三個屬性,一個id,一個user_id和一個大小爲64的布爾數組。我必須創建它們大約10000000(1000萬)個。如何爲.hdf5類型創建特定類型的對象?

想象一下mongodb,我必須像那樣使用它們。我必須針對某些特定的user_id對象以及所有這些對象進行查詢。

任何建議和幫助表示讚賞。

回答

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() 

總的來說,我希望這可以幫助你。

+0

好吧,但我如何存儲這些對象?據我所知hdf5使用numpy數組來存儲。 –

+0

好的。我沒有真正注意到h5py標籤。但是,看看文檔,我會使用user_id作爲一個組。在那裏我會有一個布爾陣列。前n個數字代表id。 id的大小是多少? – Vasif

+0

2^10或2^15最有可能。 –

相關問題