【发布时间】:2018-10-21 15:30:24
【问题描述】:
我想找到一个矩阵的最小二乘解,我正在使用 numpy linalg.lstsq 函数;
weights = np.linalg.lstsq(semivariance, prediction, rcond=None)
我的变量的维度是;
semivariance 是一个大小为 5030 x 5030 的浮点数
prediction 是一个长度为 5030 的一维数组
我遇到的问题是返回 weights 的值大约需要 80 秒,而且我必须重复计算 weights 大约 10000 次,所以计算时间只是增加了。
有没有更快的方法/pythonic 函数来做到这一点?
【问题讨论】:
-
我怀疑你会在 python 的速度上击败numpy implementation。特别是因为繁重的工作是由C & Fortran 完成的。这很可能是最好的通用实现。您将不得不重新考虑您的问题,这超出了 SO 的范围。
-
由于
semivariance是方阵,所以将其取反后使用dotproduct:weights = np.linalg.inv(semivariance).dot(prediction)会更快 -
另外,我刚刚注意到你的系统是完全确定的,在这种情况下最好使用
solve:weights = np.linalg.solve(semivariance, prediction)。上述两种方法都假设semivariance是满秩的。 -
@user7436576,你在做kriging吗?
-
@WarrenWeckesser,是的。我在做克里金法
标签: python python-3.x numpy scipy least-squares