我在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
1条答案
按热度按时间fiei3ece1#
@Jared在评论中说:bisplrep/bisplev不支持外推:https://github.com/scipy/scipy/issues/3361
也就是说,如果你不需要平滑,RegularGridInterpolator会进行外推。