在插值期间提高计算速度

时间:2018-05-11 14:15:39

标签: python performance pandas numpy scipy

问题

代码通过应用克里金法执行地统计插值。对于小数据量,它工作得很好。但是,当数据量很大时,计算时间会急剧增加。

常量

c1, c2, c3, c4是常量

matrx是一个大小为6000 x 6000的数据集

变量

data是一个6000 x 3阵列

gdata是10000 x 2数组

代码

我遇到问题的代码摘录如下:

prediction = []
for i, dummy_val in range(10000):
    semivariance = []
    for j in range(len(data[:, 2])):
        distance = np.sqrt((gdata[i, 0]-data[j, 0])**2 + (gdata[i, 1]-data[j, 1])**2)
        semivariance.append((c1 + c2*(1-np.exp(-(distance/c3)**c4))))
    semivariance.append(1)
    iweights = np.linalg.lstsq(matrx, semivariance, rcond=None)
    weights = iweights[:-3][0][:-1]
    prediction.append(np.sum(data[:, 2]*weights))

当我调试代码时,我意识到问题来自

iweights = np.linalg.lstsq(matrx, semivariance, rcond=None)

对于我正在使用的大型matrxsemivariance数组运行速度非常慢。

是否有一种pythonic方法可以帮助提高计算速度,或者我可以重写整个代码块来提高速度?

0 个答案:

没有答案