Both SciPy and Numpy have built in functions for singular value decomposition (SVD). The commands are basically scipy.linalg.svd
and numpy.linalg.svd
. What is the difference between these two? Is any of them better than the other one?
Apart from the error checking, the actual work seems to be done within lapack
both with numpy
and scipy
.
Without having done any benchmarking, I guess the performance should be identical.
From the FAQ page, it says scipy.linalg
submodule provides a more complete wrapper for the Fortran LAPACK library whereas numpy.linalg
tries to be able to build independent of LAPACK.
I did some benchmarks for the different implementation of the svd
functions and found scipy.linalg.svd
is faster than the numpy counterpart:

However, jax wrapped numpy, aka jax.numpy.linalg.svd
is even faster:

Full notebook for the benchmarks are available here.
来源:https://stackoverflow.com/questions/32569188/scipy-svd-vs-numpy-svd