2017-01-08 4 views
1

Ich arbeite mit einer großen Matrix der Größe m * n für m, n> 100000. Da meine Daten riesig sind, möchte ich die Matrix im Speicher speichern und mit HDF5 und PyTables arbeiten.Wie erstellt man eine große Matrix von Matrizen in Python?

Die Elemente meiner Matrix sind jedoch kleine Matrizen von realen Werten der Dimension 5 * 5.

Ich habe bereits den folgenden Beitrag gelesen, aber ich würde gerne wissen, ob es andere Möglichkeiten gibt, diese Art von Daten in Tabellen zu speichern?

(Create a larger matrix from smaller matrices in numpy)

Vielen Dank im Voraus

+0

Arbeiten Sie tatsächlich mit einer 100.000 * 100.000 Matrix, deren Elemente 5 * 5 Matrizen sind? –

+0

Warum nicht Pandas verwenden –

Antwort

2

In numpy gibt es zwei relevante Strukturen.

Eine ist eine 4-dimensionale Anordnung, z.B. np.zeros((100,100,5,5),int). Die andere ist eine zweidimensionale Anordnung von Objekten. np.zeros((100,100),dtype=object). Bei Objekt-Arrays können die Elemente Anythings sein - Strings, Zahlen, Listen, Ihre 5x5-Arrays, andere 7x3-Arrays, None, usw.).

Es ist am einfachsten, Mathe auf dem 4D-Array, zum Beispiel die Mittelwertbildung über alle 5x5-Unterfelder, oder die Suche nach der [:,:,0,0] Ecke von allen.

Wenn Ihre Subarrays alle 5x5 sind, kann es schwierig sein, dieses object Array zu erstellen und zu füllen. np.array(...) versucht, dieses 4dim-Array nach Möglichkeit zu erstellen.

Mit h5py können Sie die Datei Chunk und Zugriff auf Teile des größeren Array. Aber Sie müssen immer noch eine funktionsfähige numplige Darstellung haben, um etwas mit ihnen zu machen.

+0

Vielen Dank. Der erste funktionierte gut. – user5996916

Verwandte Themen