[英]numpy.linalg.lstsq too slow
我正在尝试将 numpy.linalg.lstsq 的性能与手动解决最小二乘问题进行比较。 我写了以下代码。
import numpy as np
import timeit
m,n = 400,10
A = np.random.rand(m,n)
b = np.random.rand(m)
t1 = timeit.timeit(lambda : np.linalg.inv(A.T@A) @ A.T @ b, number=100)
t2 = timeit.timeit(lambda : np.linalg.solve(A.T@A, A.T@b), number=100)
t3 = timeit.timeit(lambda : np.linalg.lstsq(A,b)[0], number=100)
print(t1)
print(t2)
print(t3)
令我惊讶的是,output 是
0.0040054810015135445
0.002654149997397326
0.010454912000568584
lstsq
大约慢 5 倍。 为什么会这样?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.