Python SmoothBivariateSpline给出了意外的答案

Python SmoothBivariateSpline给出了意外的答案,python,scipy,interpolation,Python,Scipy,Interpolation,我正在尝试使用scipy.interpolate.SmoothBivariateSpline插值二维非结构化网格。恐怕我还不明白这是怎么回事 我尝试了一个非常简单的例子: 从scipy导入插值 x=[0,0,0,0,1,1,1,1,1,2,2,2,2] y=[0,1,2,3,0,1,2,3,0,1,2,3] z=[-0.07453796、-0.10857792、-0.07307213、0.01813757、-0.31634891、-0.47235507、-0.33198942、-0.285309

我正在尝试使用scipy.interpolate.SmoothBivariateSpline插值二维非结构化网格。恐怕我还不明白这是怎么回事

我尝试了一个非常简单的例子:

从scipy导入插值
x=[0,0,0,0,1,1,1,1,1,2,2,2,2]
y=[0,1,2,3,0,1,2,3,0,1,2,3]
z=[-0.07453796、-0.10857792、-0.07307213、0.01813757、-0.31634891、-0.47235507、-0.33198942、-0.28530956、-0.26995915、-0.40618327、-0.0950876、-0.18871505]
xy_func=插值光滑二元样条线(x,y,z,kx=1,ky=1,s=0)
打印(xy_函数ev(0,1),xy_函数ev(1,0),xy_函数ev(1,3))
我已经将结果可视化了,很明显这是不正确的。我还对一些数据点的结果进行了评估,因为应该清楚输出应该是什么。从打印中,我希望得到输出“-0.10857792,-0.31634891,-0.28530956”,但我得到的结果是“-0.1390947215-0.272092075-0.16190767”


我在哪里下车?

我想有两个问题: 如果你通过增加kx=2和ky=3来允许一个更弯曲的形状,那么你的预测已经得到了更好的拟合

但是,因为SmoothBivariateSpline不喜欢测试数据的垂直特性,所以无论如何都不会得到很好的结果。如果您更改x,使其增量更均匀,即(x=范围(len(x)),它看起来会更好


我认为有两个问题: 如果你通过增加kx=2和ky=3来允许一个更弯曲的形状,那么你的预测已经得到了更好的拟合

但是,因为SmoothBivariateSpline不喜欢测试数据的垂直特性,所以无论如何都不会得到很好的结果。如果更改x使其增量更均匀,即(x=范围(len(x)),它看起来会更好

SciPy的github站点上的Bug报告(非常旧!):SciPy的github站点上的Bug报告(非常旧!):不确定“测试数据的垂直性质”是什么意思,我想你可能误解了(或者我误解了)。据我所知,每个x和y对都有一个对应的z值,例如x=3和y=1的z=-0.16190767。这意味着在绘图中,每个绿点都有一个三维的高程(进入/离开屏幕)。不确定“测试数据的垂直性质”是什么意思,我想你可能误解了(或者我误解了).据我所知,每个x和y对都有一个对应的z值,例如x=3和y=1的z=-0.16190767。这意味着在绘图中,每个绿点都有一个三维高程(进入/离开屏幕)。