Tengo una matriz dispersa que parece ser demasiado grande para manejar eficazmente en la memoria (2000x2500000, flotante). Puedo formarlo en un lil_array disperso (scipy) pero si intento generar una matriz escasa comprimida de columna o fila (A.tocsc(), A.tocsr()) mi máquina se queda sin memoria (y también hay una falta de coincidencia seria entre los datos en un archivo de texto 4.4G y la matriz lil pickelada 12G - sería bueno tener un formato de disco que se aproxime más al tamaño de los datos brutos).Grande en la matriz de discos para numpy
Probablemente tendré que manipular matrices aún más grandes en el futuro.
Pregunta: ¿Cuál es la mejor manera de manejar grandes matrices de discos de forma que pueda usar las funciones normales de numpy de forma transparente? Por ejemplo, sumas a lo largo de filas y columnas, productos vectoriales, max, min, slicing, etc.
¿Es el camino a seguir? ¿hay una capa de middleware sql-numpy buena (rápida)? un secreto en la matriz de discos integrado en numpy?
En el pasado con matrices (un poco más pequeñas), siempre acababa de almacenar en caché los resultados largos calculados en el disco. Esto funciona cuando las matrices terminan siendo < 4G más o menos, pero no es sostenible.
Cuando seleccionó su matriz, ¿se aseguró de usar el protocolo binario? Si está utilizando el protocolo de texto predeterminado, esta podría ser la causa del enorme tamaño del archivo. – DaveP