我有幾個包含相同的兩個數據集的HDF5文件,分別爲data
和labels
。這些數據集是多維數組,第一個維數對於兩者都是相同的。將多個HDF5文件的數據集合併爲一個虛擬數據集
我想將HDF5文件合併到一個文件中,我認爲最好的方法是創建一個虛擬數據集[h5py reference],[HDF5 tutorial in C++]。但是,我還沒有在Python和h5py中找到任何示例。
是否有任何替代虛擬數據集,或者你知道任何使用h5py的例子嗎?
我有幾個包含相同的兩個數據集的HDF5文件,分別爲data
和labels
。這些數據集是多維數組,第一個維數對於兩者都是相同的。將多個HDF5文件的數據集合併爲一個虛擬數據集
我想將HDF5文件合併到一個文件中,我認爲最好的方法是創建一個虛擬數據集[h5py reference],[HDF5 tutorial in C++]。但是,我還沒有在Python和h5py中找到任何示例。
是否有任何替代虛擬數據集,或者你知道任何使用h5py的例子嗎?
以gdal虛擬格式一試。
有人嘗試過。例子在這裏,但不幸的是我無法讓它工作,而且它似乎在語法上不正確。 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()
謝謝您的回答,但它不是在h5py正式版,我不能讓它使用該分支的工作。你試過了嗎?它對你有用嗎? –
對不起,我試過但失敗了。相應地更新我的答案。 – kakk11
GDAL似乎並不支持HDF5 – sappjw