在二维网格上插入numpy / scipy

时间:2018-03-25 15:57:58

标签: python numpy scipy interpolation

我在二维图像网格上有两个数据点,并且已知这两个点的一些感兴趣的数值。

例如:

让我们考虑一下x=(2,2)。然后考虑一个4网格邻域,我们将x_1=(1,2), x_2=(2,3), x_3=(3,2), x_4=(2,1)作为x的邻居。假设这些点的某些兴趣量的值为y=5, y_1=7, y_2=8, y_3= 10, y_4 = 3。 通过插值,我想在子像素值处找到y,比如(2.7, 2.3)。 上面的问题可以用numpy数组表示如下。

x = [(2,2), (1,2), (2,3), (3,2), (2,1)]
y = [5,7,8,10,3]

如何使用numpy / scipy插值来做到这一点?我找不到处理它的具体例子。

1 个答案:

答案 0 :(得分:2)

方法griddata就足够了。默认情况下,它执行分段线性插值,在您的示例中,这似乎是最合适的方法。

from scipy.interpolate import griddata
x = [(2,2), (1,2), (2,3), (3,2), (2,1)]
y = [5,7,8,10,3]
evaluate_at = [(2.7, 2.3)]    # could be an array of points
result = griddata(x, y, evaluate_at) 

返回array([ 9.4])