Scipy interp2d 插入屏蔽填充值
Scipy interp2d interpolate masked fill values
我想插值数据 (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)
我得到以下结果:
填充值已被插值。
如何在不插入填充值的情况下插入数据?
我找到了 scipy.interpolate.griddata 的解决方案,但我不确定那是最好的。
我使用 nearest
方法参数对数据进行插值,其中 returns 最接近插值点的数据点的值。
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))
我想插值数据 (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)
我得到以下结果:
填充值已被插值。
如何在不插入填充值的情况下插入数据?
我找到了 scipy.interpolate.griddata 的解决方案,但我不确定那是最好的。
我使用 nearest
方法参数对数据进行插值,其中 returns 最接近插值点的数据点的值。
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))