Sto provando a salvare un grande array numpy e lo ricarico. Utilizzando numpy.save
e numpy.load
, i valori dell'array sono danneggiati/modificati. La forma e il tipo di dati dell'array pre-saving e post-caricamento sono gli stessi, ma l'array di post-caricamento ha la maggior parte dei valori azzerati. L'array è (22915,22915), i valori sono float64, prende 3,94 gb come file .npy e le voci dei dati sono nella media di .1 (non piccoli caratteri che potrebbero essere convertiti a zero in modo ragionevole). Sto usando numpy 1.5.1.numpy save/load corrompendo un array
Qualsiasi aiuto sul motivo per cui questo danneggiamento si sta verificando sarebbe molto apprezzato perché sono in perdita. Di seguito è riportato un codice che fornisce la prova delle affermazioni di cui sopra.
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)
Hai provato o sei in grado di provare una nuova versione di Numpy? – nneonneo
Non riesco a - 1.5.1 è una dipendenza per le altre librerie che sto usando. Se è stato corretto in una versione aggiornata (che era presente nelle ricerche che ho condotto), allora forse posso provare ad aggiornare, anche se ovviamente questo potrebbe causare più/altri problemi. – wdwvt1
Un paio di cose da provare: 1) cerca la posizione in cui l'array va a zero, 2) prova a stampare l'ultima riga/colonna dell'array in isolamento (per vedere se potrebbe essere un problema di stampa strano), 3) prova usando la mappatura della memoria specificando ''r'' come secondo parametro su' load'. – nneonneo