数据点区域外的Scipy样条插值

vkc1a9a2  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(106)

我在1d轴上拟合2d点,使用scipy.interpolate.bisplrep。这比一般的多项式插值更好,但是在用于拟合的点之外,它给出有界值。我找不到任何类似fill_value="extrapolate"的东西,我们可以和interp1d一起使用。
由于样条是分段多项式,我想我可以使用最接近的多项式的系数,但我不知道如何。

xy = [[0, 0], [0, 1], [1, 0], [1, 1], [2, 2], [0, 2], [2, 0], [2, 1], [0.1, 0]]
x, y = tuple(list(zip(*xy)))
z =  [0, 1, 1, 1.1, 3, 2, 2, 3, 0.1]
spline = interpolate.bisplrep(x, y, z, kx=2, ky=2)

print(interpolate.bisplev([0], [0], spline)) # close to 0 as expected
print(interpolate.bisplev([1], [1], spline)) # 1.1 as expected
print(interpolate.bisplev([2], [2], spline)) # 3 as expected
print(interpolate.bisplev([3], [3], spline)) # 3 but should return way more
fiei3ece

fiei3ece1#

@Jared在评论中说:bisplrep/bisplev不支持外推:https://github.com/scipy/scipy/issues/3361
也就是说,如果你不需要平滑,RegularGridInterpolator会进行外推。

相关问题