2012-04-23 12 views

Antwort

34

h5py bereits liest Dateien in als numpy Arrays, so dass nur:

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

Die [()] bedeutet das gesamte Array zu lesen, in; Wenn Sie das nicht tun, liest es nicht die ganzen Daten, sondern gibt Ihnen einen faulen Zugang zu Unterteilen (sehr nützlich, wenn das Array riesig ist, aber Sie nur einen kleinen Teil davon benötigen).

+0

Vielen Dank Dougal.Ich habe den Code geändert: >>> f = h5py.File ('D: /! JODI/Macao Wind/u_100m/20100101.hdf5', 'r') my_array = f [ 'u']. Wert f.close() Eine weitere dumme Frage ist die Out-Putarray ist in einer Datei? Wo finde ich das Ausgangsarray? Vielen Dank –

+0

Ich bin mir nicht sicher, was Sie mit dem Ausgangs-Array meinen: 'my_array' von oben? Alle Änderungen, die Sie daran vornehmen, werden nur im Speicher gespeichert, es sei denn, Sie speichern sie selbst (in eine 'h5py.File' oder mit etwas wie' numpy.save'). – Dougal

+4

Für die Nachwelt: Die Methode '.value' funktioniert nicht mehr. Verwenden Sie stattdessen 'f ['array_name'] [()]'. – Dougal

0

Für diese Frage ist es viel zu viel Aufwand, aber wenn Sie eine Menge Dinge wie dieses zu tun haben, verwende ich ein Paket SpacePy, das einige davon einfacher macht.

datamodel.fromHDF5() Dokumentation Dies gibt ein Wörterbuch von Arrays zurück, die auf ähnliche Weise wie h5py mit Daten verarbeitet werden.

Verwandte Themen