python - SmoothBivariateSpline 给出了意想不到的答案

标签 python scipy interpolation

我正在尝试使用 scipy.interpolate.SmoothBivariateSpline 插入二维非结构化网格。恐怕我还不明白它是如何工作的。

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

from scipy import interpolate

x = [0, 0, 0, 0, 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 = interpolate.SmoothBivariateSpline(x, y, z, kx=1, ky=1, s=0)
print(xy_func.ev(0, 1), xy_func.ev(1, 0), xy_func.ev(1, 3))

我已经可视化了结果,很明显它是不正确的。我还评估了一些数据点的结果,因为应该清楚输出应该是什么。从打印中我期望得到输出“-0.10857792,-0.31634891,-0.28530956”,但我得到的结果是“-0.1390947215 -0.272092075 -0.16190767”。

我去哪儿了?

最佳答案

我认为有两个问题: 如果您通过增加 kx=2 和 ky=3 来允许曲线形状,那么您已经可以更好地拟合您的预测。

enter image description here

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

enter image description here

关于python - SmoothBivariateSpline 给出了意想不到的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56890679/

相关文章:

python - 如何使用 python 创建有效的 json 文件?

python - 在opencv python中通过颜色检测对象

python - Scipy 排名数据从高到低反转

matlab - 避免 MatLab 代码中的循环(质心权重)

python - 在 numpy 数组的开头插入元素

python - 多行字符串 Python 正则表达式

python - 如何安装pybrain?

python - 使用 numpy 从文件中读取字符串中的 float

plot - 三次样条外推

amazon-ec2 - Terraform - 从 aws 实例资源输出实例 ID - 一次一个