lstsq
尝试解决Ax=b
最小化|b - Ax|
。 scipy和numpy都提供了具有非常相似接口(interface)的linalg.lstsq
函数。该文档没有提到针对scipy.linalg.lstsq或numpy.linalg.lstsq使用哪种算法,但似乎做得差不多。
scipy.linalg.lstsq和numpy.linalg.lstsq的实现似乎有所不同。两者似乎都使用LAPACK,两种算法似乎都使用SVD。
区别在哪里?我应该使用哪一个?
注意:请勿将linalg.lstsq
与scipy.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/