Scipy and Numpy have between them three different functions for finding eigenvectors for a given square matrix, these are:
Here's an answer the non-routine specific part of your question:
In principle, the NumPy and SciPy linalg()
routines should be the same. Both use LAPACK and BLAS routines internally. The implementation in `´scipy.sparse`` uses a specific algorithm that works well for sparse matrices (ie. a matrices with mostly zero entries). Do not use this if your matrix is dense.
Note that technically, the eig()
in SciPy/NumPy be different implementations due to the fact that both packages can be built with different implementations of Lapack/BLAS. Common choices here would be standard Lapack/BLAS as available from netlib, ATLAS, Intel MKL or OpenBLAS.