2017-06-02 103 views
1

我有幾個包含相同的兩個數據集的HDF5文件,分別爲datalabels。這些數據集是多維數組,第一個維數對於兩者都是相同的。將多個HDF5文件的數據集合併爲一個虛擬數據集

我想將HDF5文件合併到一個文件中,我認爲最好的方法是創建一個虛擬數據集[h5py reference],[HDF5 tutorial in C++]。但是,我還沒有在Python和h5py中找到任何示例。

是否有任何替代虛擬數據集,或者你知道任何使用h5py的例子嗎?

回答

0

有人嘗試過。例子在這裏,但不幸的是我無法讓它工作,而且它似乎在語法上不正確。 https://github.com/aaron-parsons/h5py/blob/1e467f6db3df23688e90f44bde7558bde7173a5b/docs/vds.rst#using-the-vds-feature-from-h5py

f = h5py.File("VDS.h5", 'w', libver='latest') 
file_names_to_concatenate = ['1.h5', '2.h5', '3.h5', '4.h5', '5.h5'] 
entry_key = 'data' # where the data is inside of the source files. 
sh = h5.File(file_names_to_concatenate[0],'r')[entry_key].shape # get the first ones shape. 

TGT = h5.VirtualTarget(outfile, outkey, shape=(len(file_names_to_concatenate,) + sh) 

for i in range(num_projections): 
    VSRC = h5.VirtualSource(file_names_to_concatenate[i]), entry_key, shape=sh) 
    VM = h5.VirtualMap(VSRC[:,:,:], TGT[i:(i+1):1,:,:,:],dtype=np.float) 
    VMlist.append(VM) 

d = f.create_virtual_dataset(VMlist=VMlist,fillvalue=0) 
f.close() 
+0

謝謝您的回答,但它不是在h5py正式版,我不能讓它使用該分支的工作。你試過了嗎?它對你有用嗎? –

+1

對不起,我試過但失敗了。相應地更新我的答案。 – kakk11

相關問題