Ich versuche ein großes numpy Array zu speichern und neu zu laden. Mit numpy.save
und numpy.load
sind die Array-Werte beschädigt/ändern. Die Form und der Datentyp des Arrays, das vor dem Speichern und nach dem Laden gespeichert wird, sind identisch, aber beim Nachladen des Arrays ist der Großteil der Werte auf Null gesetzt. Das Array ist (22915,22915), die Werte sind Float64s, 3,94 GB als .npy-Datei und die Dateneinträge durchschnittlich etwa 0,1 (keine winzigen Floats, die vernünftigerweise in Nullen konvertiert werden könnten). Ich benutze numpy 1.5.1.numpy speichern/laden ein Array korrumpieren
Jede Hilfe auf, warum diese Korruption auftritt, würde sehr geschätzt werden, weil ich ratlos bin. Unten finden Sie einen Code, der die oben genannten Behauptungen belegt.
In [7]: m
Out[7]:
array([[ 0. , 0.02023, 0.00703, ..., 0.02362, 0.02939, 0.03656],
[ 0.02023, 0. , 0.0135 , ..., 0.04357, 0.04934, 0.05651],
[ 0.00703, 0.0135 , 0. , ..., 0.03037, 0.03614, 0.04331],
...,
[ 0.02362, 0.04357, 0.03037, ..., 0. , 0.01797, 0.02514],
[ 0.02939, 0.04934, 0.03614, ..., 0.01797, 0. , 0.01919],
[ 0.03656, 0.05651, 0.04331, ..., 0.02514, 0.01919, 0. ]])
In [8]: m.shape
Out[8]: (22195, 22195)
In [12]: save('/Users/will/Desktop/m.npy',m)
In [14]: lm = load('/Users/will/Desktop/m.npy')
In [15]: lm
Out[15]:
array([[ 0. , 0.02023, 0.00703, ..., 0. , 0. , 0. ],
[ 0. , 0. , 0. , ..., 0. , 0. , 0. ],
[ 0. , 0. , 0. , ..., 0. , 0. , 0. ],
...,
[ 0. , 0. , 0. , ..., 0. , 0. , 0. ],
[ 0. , 0. , 0. , ..., 0. , 0. , 0. ],
[ 0. , 0. , 0. , ..., 0. , 0. , 0. ]])
In [17]: type(lm[0][0])
Out[17]: numpy.float64
In [18]: type(m[0][0])
Out[18]: numpy.float64
In [19]: lm.shape
Out[19]: (22195, 22195)
Haben Sie versucht oder können Sie eine neue Version von Numpy ausprobieren? – nneonneo
Ich kann nicht - 1.5.1 ist eine Abhängigkeit für die anderen Bibliotheken, die ich verwende. Wenn es in einer aktualisierten Version behoben wird (die es in den von mir durchgeführten Suchen gab), dann kann ich vielleicht versuchen, ein Upgrade durchzuführen, obwohl dies natürlich weitere Probleme verursachen könnte. – wdwvt1
Paar Dinge zu versuchen: 1) Suche nach der Position, wo das Array auf Null geht, 2) versuchen, die letzte Zeile/Spalte des Arrays isoliert auszudrucken (um zu sehen, ob es ein komisches Druckproblem sein könnte), 3) versuchen Verwenden von Speicherabbildung durch Spezifizieren von '' r '' als einen zweiten Parameter zu 'Laden'. – nneonneo