¿Cuál es una forma eficiente de inicializar y acceder a los elementos de una gran matriz en Python?¿Arreglo eficiente de Python con 100 millones de ceros?
Quiero crear una matriz en Python con 100 millones de entradas, enteros sin signo de 4 bytes, inicializados a cero. Quiero acceso rápido a la matriz, preferiblemente con memoria contigua.
Extrañamente, NumPy las matrices parecen estar funcionando muy lento. ¿Hay alternativas que pueda probar?
Existe el módulo array.array, pero no veo un método para asignar eficientemente un bloque de 100 millones de entradas.
Respuestas a los comentarios:
- no pueden utilizar una matriz dispersa. Será demasiado lento para este algoritmo porque la matriz se vuelve muy rápida.
- Sé que se interpreta Python, pero seguramente hay una manera de hacer operaciones rápidas de matriz?
- Hice algunos perfiles, y obtengo unos 160K accesos a la matriz (buscando o actualizando un elemento por índice) por segundo con NumPy. Esto parece muy lento.
Usted está hablando de varios cientos de megabytes de matriz, en un lenguaje interpretado ... ¿Qué tan lento es lento, para usted? –
¿Será escasa tu matriz? Podría ser mejor asignar memoria solo para las entradas que realmente usa. –
Es posible que desee elaborar sobre lo que quiere hacer con él. "Eficiente" no tiene significado en sí mismo. – balpha