lstsq尝试解决Ax=b最小化|b - Ax|。 scipy和numpy都提供了具有非常相似接口(interface)的linalg.lstsq函数。该文档没有提到针对scipy.linalg.lstsqnumpy.linalg.lstsq使用哪种算法,但似乎做得差不多。

scipy.linalg.lstsqnumpy.linalg.lstsq的实现似乎有所不同。两者似乎都使用LAPACK,两种算法似乎都使用SVD。

区别在哪里?我应该使用哪一个?

注意:请勿将linalg.lstsqscipy.optimize.leastsq混淆,后者也可以解决非线性优化问题。

最佳答案

如果我正确阅读了源代码(Numpy 1.8.2,Scipy 0.14.1
),numpy.linalg.lstsq()使用LAPACK例程xGELSD,而scipy.linalg.lstsq()使用xGELSS

LAPACK Manual Sec. 2.4状态



这意味着Numpy更快,但占用更多内存。

2017年8月更新:

Scipy现在默认使用xGELSD https://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.lstsq.html

关于python - numpy.linalg.lstsq和scipy.linalg.lstsq有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29372559/

10-10 00:01