我可以在Python中向量化此IDW算法吗?

时间:2019-02-21 22:35:27

标签: python

def iwd(x,y,v,g,p):
    for i in range(grid.shape[0]):
        for j in range(grid.shape[1]):
           distance = np.sqrt((x-i)**2+(y-j)**2) 
           if (distance**p).min()==0: 
              grid[i,j] = v[(distance**p).argmin()]
           else:
              grid[i,j] = np.sum(v/(distance**p)/(np.sum(1/(distance**p)))) 
    return grid

这是我用于IDW插值的算法。计算网格上每对点的距离。如果distance为0,则从最近的点开始分配该值,以避免除以0。在其他情况下,公式 使用idw formula

有没有一种方法不使用两个for循环?我尝试了numpy.ndunemerate,但是我得到了 “操作数不能与形状一起广播”,无论如何这可能不是一个好主意。

0 个答案:

没有答案