2012-04-23 12 views

risposta

34

h5py legge già file array come NumPy, quindi basta:

with h5py.File('the_filename', 'r') as f: 
    my_array = f['array_name'][()] 

La [()] mezzi per leggere l'intero array in; se non lo fai, non legge l'intero dato ma ti dà invece accesso pigro alle sotto-parti (molto utile quando l'array è enorme ma hai bisogno solo di una piccola parte di esso).

+0

Grazie Dougal.I ho modificato il codice per: >>> f = h5py.File ('D: /! JODI/Macau Wind/u_100m/20100101.hdf5', 'r') my_array = f [ 'u']. valore f.close() Un'altra domanda stupida è l'uscita putarray in un file? dove posso trovare l'array di output? grazie mille –

+0

Non sono sicuro di cosa intendi con l'array di output: 'my_array' dall'alto? Tutte le modifiche apportate a questo vengono memorizzate solo in memoria, a meno che non le salvi da soli (in un file 'h5py.File' o qualcosa come' numpy.save'). – Dougal

+4

Per i posteri: il metodo '.value' non funziona più. Usa invece 'f ['array_name'] [()]'. – Dougal

0

Per questa domanda è eccessivo, ma se avete un sacco di cose come questa io uso un pacchetto SpacePy che rende un po 'più facile.

datamodel.fromHDF5() documentazione Ciò restituisce un dizionario di array memorizzati in modo simile a come h5py gestisce i dati.

Problemi correlati