在SciPy中,什么是"线性"插值?

Nat*_*ate 13 python scipy

我无法在文档中或在线任何地方找到解释.什么是"线性"代表什么,它做什么?

Hoo*_*ked 12

看源头scipy/interpolate/interpolate.py, slinear是一个样条 1阶

if kind in ['zero', 'slinear', 'quadratic', 'cubic']:
    order = {'nearest': 0, 'zero': 0,'slinear': 1,
             'quadratic': 2, 'cubic': 3}[kind]
    kind = 'spline'
Run Code Online (Sandbox Code Playgroud)

...

if kind in ('linear', 'nearest'):
    # Make a "view" of the y array that is rotated to the interpolation
    # axis.
    minval = 2
    if kind == 'linear':
        self._call = self._call_linear
    elif kind == 'nearest':
        self.x_bds = (x[1:] + x[:-1]) / 2.0
        self._call = self._call_nearest
else:
    minval = order + 1
    self._call = self._call_spline
    self._spline = splmake(x, y, order=order)
Run Code Online (Sandbox Code Playgroud)

自从docs for splmake州:

def splmake(xk, yk, order=3, kind='smoothest', conds=None):
    """
    Return a representation of a spline given data-points at internal knots
    ...
Run Code Online (Sandbox Code Playgroud)

  • @NilsWerner虽然如果我们两个人都不得不求助于来源,那么这是一个很好的迹象表明文档是不完整的. (7认同)
  • 什么时候可以选择`线性`而不是'线性`?一个非常简短的测试显示`linear`更快并返回相同的结果. (5认同)
  • @Hooked,我刚刚向主要仓库发布了拉取请求,修复了这个疏忽. (5认同)
  • @KylerBrown他们实际上并不相同......这里有一个显示差异的要点:https://gist.github.com/stringfellow/8ae4d3f25ca525e75bb79c01fbda4a24 (3认同)
  • @StevePike谢谢!所以不一样,但是在合理的公差范围内(浮点误差?).很高兴四年后回答我的问题! (3认同)