我想找到矩阵的最小二乘解,我正在使用numpy的linalg.lstsq
函数;
weights = np.linalg.lstsq(semivariance, prediction, rcond=None)
我的变量维度如下:
semivariance
是一个大小为5030 x 5030的浮点数。
prediction
是一个长度为5030的一维数组。我的问题是,返回
weights
的值需要大约80秒,并且我必须重复计算weights
约10000次,因此计算时间很长。是否有更快的方法或Python函数可以实现这一点?
semivariance
是一个方阵,因此更快的方法是先将其求逆,然后使用dot
乘积:weights = np.linalg.inv(semivariance).dot(prediction)
。 - Brenllasolve
:weights = np.linalg.solve(semivariance, prediction)
。以上两种方法都假定semivariance
具有完整的秩。 - Brenlla