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。在其他情况下,公式 使用。
有没有一种方法不使用两个for
循环?我尝试了numpy.ndunemerate,但是我得到了
“操作数不能与形状一起广播”,无论如何这可能不是一个好主意。