Ich versuche, eine sehr große spärliche Matrix zu erstellen, die eine Form (447957347, 5027974)
hat. Und es enthält 3.289.288.566 Elemente.So erstellen Sie eine riesige spärliche Matrix in scipy
Aber, wenn ich eine csr_matrix
scipy.sparse
verwenden, ist es so etwas wie dies zurück:
<447957346x5027974 sparse matrix of type '<type 'numpy.uint32'>'
with -1005678730 stored elements in Compressed Sparse Row format>
Der Quellcode Matrix für die Erstellung ist:
indptr = np.array(a, dtype=np.uint32) # a is a python array('L') contain row index information
indices = np.array(b, dtype=np.uint32) # b is a python array('L') contain column index information
data = np.ones((len(indices),), dtype=np.uint32)
test = csr_matrix((data,indices,indptr), shape=(len(indptr)-1, 5027974), dtype=np.uint32)
Und fand ich auch, wenn ich konvertieren ein 3 Milliarden langes Python-Array zu einem numpy-Array führt zu einem Fehler:
ValueError:setting an array element with a sequence
Wenn ich jedoch drei Python-Arrays mit einer Länge von 1 Milliarde erstellen und diese in ein numpy-Array umwandeln, dann hänge sie an. Es funktioniert gut.
Ich bin verwirrt.
Anstatt "a" und "b" zu beschreiben, können Sie Code hinzufügen, der Beispieldaten generiert? – YXD
@Ofey Vielleicht können Sie die coo_matrix verwenden, um Ihre spärliche Matrix zu erstellen, die einfacher erscheint als Ihr aktueller Ansatz: 'test = coo_matrix ((Daten, (Zeilen, Spalten)), Form = (m, n))' –
Sind Sie Verwenden von 32-Bit-Python oder ein 32-Bit-System? Klingt so, als würden Sie eine 32-Bit-Grenze für vorzeichenbehaftete Ganzzahlen erreichen. – jrennie