¿Qué biblioteca de Python es mejor para cálculos simples de matriz dispersa, PySparse o SciPy?

SciPy será tu mejor apuesta en términos de simplicidad.

SciPy es un paquete maduro que es fácil de instalar y funciona muy bien con los datos de NumPy que ya tenga. Por ejemplo:

>>> import numpy >>> from scipy import sparse # Let's build a 100 x 100 matrix with around 10% filled with ones >>> A = abs((numpy.random.random(100 ** 2) - 0.4)).round() >>> M = A.reshape(100, 100) >>> S = sparse.csr_matrix(M) >>> S 100x100 sparse matrix of type '' with 980 stored elements in Compressed Sparse Row format> >>> %timeit S * S 1000 loops, best of 3: 261 µs per loop 

¡Eso es!

Si desea saber más sobre qué tipos de matrices dispersas en SciPy usar, lea la segunda mitad de esta respuesta: la respuesta de Don van der Drift a ¿Cuál es mejor para la manipulación de la matriz de pitón, numpy o scipy?

Sin embargo, algunas notas sobre PySparse. El proceso de instalación actual parece estar diseñado para máquinas Windows. Además, es efectivamente un contenedor que se encuentra en la parte superior de SuiteSparse, una biblioteca que aprovecha la potencia de la GPU.

Todavía no he podido comparar los dos con éxito de una manera comparable, pero si lo hago, actualizaré esta respuesta.

SciPy es ciertamente más fácil de usar, ofrece más posibilidades que PySparse pero también es mucho más lento que PySparse. Por ejemplo, perfilar el método matvec (multiplicación de matriz dispersa con un vector NumPy denso) me dice que SciPy.sparse es 118.5 a 221.7 veces más lento que PySparse.

Tenga en cuenta que PySparse será reemplazado por CySparse en el futuro (con suerte cercano).

Personalmente, nunca he oído hablar de PySparse, pero solo soy yo. SciPy es un marco bien adoptado para matrices dispersas y se modifica y compromete continuamente. Lo he usado bastante y me encanta. Además de C y FORTRAN, SciPy parece ser la mejor biblioteca para mí. Puede existir un paquete mejor en algún otro lenguaje de programación, pero probablemente no conozco ese lenguaje.

Estoy de acuerdo, creo que SciPY es más elegante y sólido, más intuitivo de usar también. Puede ser difícil comenzar con PySparse, lleva tiempo hasta que lo descubras.