使用RectBivariateSpline在2D图像上进行插值(原始数据如下所示),如果平滑为0,我得到插值,但如果我将平滑设置为非零值,甚至为0.001,则结果仅包含nan值。我的"图像"是一个1000x800的数字网格,从0到14。
from scipy import interpolate
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x=np.arange(img.shape[1])
y=np.arange(img.shape[0])
X, Y = np.meshgrid(x,y)
fig=plt.figure(1)
for smooth in [0,.001,.01,.1]:
plt.clf()
plt.cla()
ax=fig.add_subplot(111,projection='3d')
bvspl=interpolate.RectBivariateSpline(x,y,np.transpose(img),s=smooth)
print(np.min(bvspl(x,y)),np.max(bvspl(x,y)))
ax.plot_surface(X,Y,np.transpose(bvspl(x,y)))
fig.savefig(path+str(smooth)+'_3d.png')
print语句的结果是:
-2.15105711021e-15 14.3944312333
nan nan
nan nan
nan nan
答案 0 :(得分:0)
就我而言,我只需在插值前将所有缺失值设置为-9999。插值后,我将所有负值再次设置为缺失值 - 是的,我将丢失边界信息,但这是我到目前为止所做的。我正在寻找另一种快速准确的解决方案。