Estoy tratando de guardar una gran matriz numpy y volver a cargarla. Usando numpy.save
y numpy.load
, los valores de la matriz están dañados/cambian. La forma y el tipo de datos de la matriz de guardado previo y posterior a la carga son los mismos, pero la matriz posterior a la carga tiene la gran mayoría de los valores a cero. La matriz es (22915,22915), los valores son float64, toma 3,94 gb como un archivo .npy y las entradas de datos promedian aproximadamente .1 (no pequeños flotantes que podrían convertirse razonablemente en ceros). Estoy usando numpy 1.5.1.numpy save/load corrompiendo una matriz
Cualquier ayuda sobre por qué está ocurriendo esta corrupción sería muy apreciada porque estoy perdido. A continuación se muestra un código que proporciona evidencia de los reclamos anteriores.
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)
¿Has probado o puedes probar una nueva versión de Numpy? – nneonneo
No puedo - 1.5.1 es una dependencia para las otras bibliotecas que estoy usando. Si está arreglado en una versión actualizada (que había alguna evidencia de las búsquedas que realicé) entonces quizás pueda intentar actualizar, aunque obviamente esto podría causar más/otros problemas. – wdwvt1
Un par de cosas que intentar: 1) buscar la posición donde la matriz se pone a cero, 2) intentar imprimir la última fila/columna de la matriz de forma aislada (para ver si puede ser un problema de impresión raro), 3) probar usando mapeo de memoria especificando ''r'' como un segundo parámetro para' cargar'. – nneonneo