2017-06-02 5 views
1

Ich habe mehrere HDF5-Dateien, die jeweils die gleichen zwei Datensätze enthalten, data und labels. Diese Datasets sind mehrdimensionale Arrays und die erste Dimension ist für beide gleich.Kombinieren Sie Datensätze von mehreren HDF5-Dateien in ein virtuelles Dataset

Ich möchte die HDF5-Dateien in einer Datei kombinieren und ich denke, der beste Weg wäre, eine virtuelle Datenmenge zu erstellen, [h5py reference], [HDF5 tutorial in C++]. Ich habe jedoch kein Beispiel in Python und h5py gefunden.

Gibt es eine Alternative zum virtuellen Dataset oder kennen Sie ein Beispiel mit h5py?

Antwort

0

Jemand hat es versucht. Beispiel ist hier, aber leider konnte ich es nicht zum Laufen bringen und es scheint auch syntaktisch falsch zu sein. 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

Vielen Dank für Ihre Antwort zu unterstützen, aber es ist nicht in der offiziellen Version von h5py und ich konnte es nicht mit diesem Zweig zu arbeiten. Hast du es versucht? Hat es für dich funktioniert? –

+1

Sorry, ich habe versucht, aber gescheitert. Meine Antwort wurde entsprechend aktualisiert. – kakk11

Verwandte Themen