Scipy interp2d插值掩码填充值

3

我想对数据进行插值(120*120),以获得输出数据(1200*1200)。

为此,我使用了 scipy.interpolate.interp2d

以下是我的输入数据,其中255对应于填充值,在插值之前我会掩盖这些值。

输入数据

我正在使用下面的代码:

tck = interp2d(np.linspace(0, 1200, data.shape[1]),
               np.linspace(0, 1200, data.shape[0]),
               data,
               fill_value=255)
data = tck(range(1200), range(1200))
data = np.ma.MaskedArray(data, data == 255)

我得到了以下结果:

Output data

填充值已经被插值。

我如何在不插值填充值的情况下插值我的数据?

1个回答

1
我发现使用scipy.interpolate.griddata可以解决问题,但我不确定这是最好的方法。
我使用nearest方法参数进行插值,该参数返回距离插值点最近的数据点的值。
points = np.meshgrid(np.linspace(0, 1200, data.shape[1]),
                     np.linspace(0, 1200, data.shape[0]))
points = zip(points[0].flatten(), points[1].flatten())
xi = np.meshgrid(np.arange(1200), np.arange(1200))
xi = zip(xi[0].flatten(), xi[1].flatten())

tck = griddata(np.array(points), data.flatten(), np.array(xi), method='nearest')
data = tck.reshape((1200, 1200))

Output data


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接