Python scipy插值提供无界值

Python scipy插值提供无界值,python,numpy,matplotlib,scipy,Python,Numpy,Matplotlib,Scipy,我有一个数据集data[xi,yi,zi]我想绘图(用插值)。使用scipy.interpolate,一切看起来几乎完美,但是插值生成的值超出了输入数据的边界。例如,假设zi受到0

我有一个数据集
data[xi,yi,zi]
我想绘图(用插值)。使用scipy.interpolate,一切看起来几乎完美,但是插值生成的值超出了输入数据的边界。例如,假设
zi
受到
0
的约束,rbf插值似乎返回超出边界的插值(例如
>1
);以下是我的简化尝试:

N=100
data=[xi yi zi]
xis = np.linspace(xi.min(), xi.max(), N)
yis = np.linspace(yi.min(), yi.max(), N)
XI, YI =  np.meshgrid(xis,yis)
rbf = scipy.interpolate.Rbf(xi, yi, zi, function='linear')
ZI=rbf(XI,YI)
print ZI.max()
->1.01357328514

是否有方法将限制传递给Rbf,并让其知道不要超过zi.max()和zi.min()?

使用径向基函数插值可能会导致值高于给定数据值的最大值,低于最小值。(). 这是该方法的一个数学特性,不能传入一个选项来禁用它。两种可能的解决办法:

  • 打印时,用于在数据的最小值和最大值之间剪裁插值
  • 使用分段线性插值代替(),这保证了数据值的最小值和最大值

能否提供一个可复制的示例
data=[xi yi zi]
对我没有帮助,我发帖后就上床睡觉了。您下面的解决方案在@Michelle处运行良好,谢谢。