numpy: effizient Lesen in einem großen array

Ich habe eine binäre Datei, die enthält ein dichtes n*m matrix von 32-bit floats. Was ist der effizienteste Weg, um es zu Lesen in einem Fortran-bestellt numpy array?

Die Datei ist mehrere gigabyte groß ist. Ich bekomme das format, aber es muss kompakt sein (d.h. über 4*n*m bytes in der Länge) und müssen leicht zu produzieren, die aus nicht-Python-code.

Bearbeiten: Es ist unerlässlich, dass die Methode erzeugt einen Fortran-bestellt matrix direkt (aufgrund der Größe der Daten, die ich nicht leisten können, zu erstellen Sie ein C-bestellt matrix und dann verwandeln Sie es in eine separate Fortran-bestellt kopieren.)

  • Nicht scipy.org/Cookbook/InputOutput die Antwort auf Ihre Frage? (Siehe Abschnitt "Binärdateien")
  • Danke. In der Tat, ich habe bereits das Experimentieren mit einigen der dort beschriebenen Methoden. Ich bin mit der Frage in der Hoffnung, dass jemand kommen würde, nach vorne, entweder hat erste-hand-Erfahrung zu tun, was ich versuche zu tun, oder ist vertraut mit numpy Interna und können Sie beraten, aus diesem Winkel.
  • Im Allgemeinen habe ich gefunden beim Lesen von sehr großen arrays in numpy, die ich brauche, um zu wissen, die Größe im Voraus, um pre-allocate der entsprechende array, um die Daten aufzunehmen. Wissen Sie, die Größe im Voraus? Wenn nicht, versuchen Sie es mit einem zwei-pass-Ansatz: erst Scannen, um entdecken Größe/Abmessungen Daten dann zuordnen array, dann Lesen/Parsen, in Arrays.
  • Guter Punkt, danke. Ich weiß, die Größe im Voraus (ich kontrolliere das Daten-format, so kann ich schreiben Sie sich die Größe, die als Teil der Datei-header.)
InformationsquelleAutor NPE | 2010-12-06
Schreibe einen Kommentar