使用SciPy调整样条曲线以使用多个y值数据集

时间:2013-08-11 12:59:04

标签: python numpy scipy spline

我想使用一组常用的x值和三组y值生成一个平滑的样条线:

xs = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

ys1 = [0.2, 0.3, 0.1, 0.8, 0.7, 0.2, 0.1, 0.8, 0.9, 1.1]
ys2 = [0.1, 0.2, 0.4, 0.5, 0.8, 0.3, 0.2, 0.9, 1.2, 1.2]
ys3 = [0.1, 0.1, 0.4, 0.1, 0.9, 0.3, 0.1, 0.8, 0.9, 0.9]

查看样条文档,我不确定我是否使用了正确的函数,但我正在尝试使用RectBivariateSpline创建样条曲线。我想要做的就是这样,但是我遇到了一些错误,这让我觉得我可能使用了错误的功能?

import scipy as scip
from scipy.interpolate import RectBivariateSpline

x_arr = scip.array(x_arr)
y_arr = scip.vstack((ys1, ys2, ys3))
spline = RectBivariate(x_arr, x_arr, y_arr)

1 个答案:

答案 0 :(得分:2)

RectBivariateSpline用于 3D样条,其中Z坐标作为2D数组给出,每个元素[i,j]对应于位置{{1 }和x[i]

在你的情况下,它看起来更像你有3 X 2D样条,你可以使用它来计算:

y[j]

如果您想采用平均样条曲线(如评论中所阐明的那样):

import scipy
from scipy.interpolate import spline
xnew = scipy.linspace(0, 10, 1000)
ys1 = spline(xs, ys1, xnew, order=3)
ys2 = spline(xs, ys2, xnew, order=3)
ys3 = spline(xs, ys3, xnew, order=3)