Python: Wie speichern Sie eine dünn besetzte Matrix mit Python?

8

Ich habe eine Ausgabe mit sparse Matrix in Python, ich muss diese spärliche Matrix auf meiner Festplatte speichern, wie kann ich das tun? wenn ich eine Datenbank erstellen soll, wie soll ich dann ?? Das ist mein Code:

%Vor%

Ich muss diese "Matte" in einer Datei speichern und auf den Wert der Matrix zugreifen, indem ich die Koordinaten verwende ..

Ergebnis der Sparse-Matrix ist wie folgt: 'Das Ergebnis der Sparse-Matrix ist wie folgt:

%Vor%

aber wenn ich es in eine Datei ablege und dasselbe lese, bekomme ich es so:

%Vor%     
Bhuvan raj 02.03.2011, 06:22
quelle

7 Antworten

4

Hinweis : Diese Antwort ist eine Antwort auf die Überarbeitungsfrage, die jetzt Code bereitstellt.

Sie sollten cPickle.dump() nicht in Ihrer Funktion aufrufen. Erstellen Sie die Sparse-Matrix, und speichern Sie ihren Inhalt anschließend in der Datei.

Versuchen:

%Vor%     
JoshAdel 02.03.2011, 20:08
quelle
6

Angenommen, Sie haben eine Anzahl von matrix oder ndarray , die Ihre Frage und Tags implizieren, gibt es eine dump Methode und load Funktion, die Sie verwenden können:

%Vor%     
ide 02.03.2011 06:33
quelle
2

pyTables ist die Python-Schnittstelle zum HDF5-Datenmodell und ist sehr beliebt bei NumPy und SciPy. Mit pyTables können Sie auf Segmente von datenbankbasierten Arrays zugreifen, ohne das gesamte Array wieder in den Speicher laden zu müssen.

Ich habe keine spezifischen Erfahrungen mit spärlichen Matrizen per se und eine schnelle Google-Suche weder bestätigt noch verweigert, dass dünn besetzte Matrizen unterstützt werden.

    
Paul 02.03.2011 06:32
quelle
2

Neben der HDF5-Unterstützung bietet Python auch eine NetCDF-Unterstützung , die sich ideal für die Speicherung von Matrixformaten eignet schneller Zugriff, sowohl spärlich als auch dicht. Es ist in Python-x, y für Windows enthalten, was viele wissenschaftliche Benutzer von Python zu Ende bringen / p>

Weitere auf Zahlen basierende Beispiele finden Sie in diesem Kochbuch .

    
whatnick 02.03.2011 06:54
quelle
2

Für sehr große dünn besetzte Matrizen auf Clustern können Sie Pytrilinos verwenden, es hat eine HDF5-Schnittstelle, die eine dünne Matrix auf die Festplatte ablegen kann, und funktioniert auch, wenn die Matrix auf verschiedenen Knoten verteilt ist.

Ссылка

    
Andrea Zonca 02.03.2011 07:08
quelle
2

Abhängig von der Größe der Sparse-Matrix tendiere ich dazu, cPickle zu verwenden, um das Array zu picken:

%Vor%

Wenn es sich um sehr große Datensätze handelt, verwende ich netcdf4-python

Bearbeiten:

Um dann erneut auf die Datei zuzugreifen, würden Sie:

%Vor%     
JoshAdel 02.03.2011 13:14
quelle
2

Die Verwendung der Option -1 in cPickle.dump function hat dazu geführt, dass die gebeizte Datei danach nicht geladen werden konnte.

Das Objekt, das ich durch cPickle gedumpt habe, war eine Instanz von scipy.sparse.dok_matrix .

Mit nur zwei Argumenten gelang es mir; Dokumentation zu pickle.dump() gibt an, dass der Standardwert des Parameters protocol 0 ist.

Unter Windows 7, Python 2.7.2 (64 Bit) und cPickle v 1.71.

Beispiel:

%Vor%     
EricP 29.08.2012 15:13
quelle

Tags und Links