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%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%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.
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 .
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.
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%Tags und Links python sparse-matrix numpy