SciPy SVD 对比Numpy 奇异值分解

SciPy SVD vs. Numpy SVD

SciPy 和 Numpy 都内置了奇异值分解 (SVD) 函数。命令基本上是 scipy.linalg.svdnumpy.linalg.svd。这两者有什么区别?它们中的任何一个都比另一个更好吗?

除了错误检查,实际工作似乎在 lapack 内完成 numpyscipy.

在没有做任何基准测试的情况下,我想性能应该是相同的。

来自 FAQ page,它说 scipy.linalg 子模块为 Fortran LAPACK 库提供了一个更完整的包装器,而 numpy.linalg 试图能够独立于 LAPACK 进行构建。

我为 svd 函数的不同实现做了一些 benchmarks,发现 scipy.linalg.svd 比 numpy 对应的函数更快:

然而,jax 封装的 numpy,又名 jax.numpy.linalg.svd 更快:

基准测试的完整笔记本可用here