I would like to implement custom, domain-specific algorithms for sparse matrix orderings. I am looking for Python packages for ordering sparse matrices. It would be nice to have:

  • The underlying datastructures handle sparsity (matrix sizes: $10^4-10^6$)

  • To be able to handle highly unsymmetric matrices. (Introducing artificial fill-in to make them symmetric is not acceptable; there are many packages for the symmetric and the mildly unsymmetric case.)

  • Execution speed is not a major concern but rapid prototyping certainly is

  • To be able to define sparse submatrix views (block views) recursively

  • Perform row and column permutations on submatrix views, which are then reflected in the original, big matrix as well

  • Intuitive, easy to learn and use API

  • Permissive license (preferably BSD 3-Clause or similarly permissive)

I do not need any sparse factorization methods, arithmetic or sparse linear solvers. I would like to experiment with my own ordering algorithms and that's all. For example, I would like to order a sparse matrix to recursive bordered block diagonal form (RBBD), and play with heuristics for defining blocks and nested blocks, based on domain-specific knowledge.

I have found so far:

Did I miss any major, well-established Python package for this purpose?

I would also greatly appreciate feedback regarding first-hand experience with these or other Python packages for such purposes (something like we have in Recommendations for a usable, fast C++ matrix library?).


1 Answer 1


I only have experience with scipy.sparse, it is limited in functionality but API is good. You may want to check out PETSC for Python too.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.