Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在scipy.interpolate.interp1d中,kind参数的不同值意味着什么?_Python_Scipy_Interpolation - Fatal编程技术网

Python 在scipy.interpolate.interp1d中,kind参数的不同值意味着什么?

Python 在scipy.interpolate.interp1d中,kind参数的不同值意味着什么?,python,scipy,interpolation,Python,Scipy,Interpolation,说明interp1d的种类参数可以取值'linear','nearest','zero','slinear','quadratic','cubic'。最后三个是样条线顺序,“线性”是不言自明的。'nearest'和'zero'做什么?'nearest'返回从X到参数最近的数据点,或者 使用最接近x的数据点在点x处插值函数y=f(x) 我猜“零”相当于截断参数,因此使用最接近零的数据点 最近的“捕捉”到最近的数据点 zero是一条零阶样条曲线。它在任何点上的值都是最后看到的原始值 linear执行

说明
interp1d
种类
参数可以取值
'linear'
'nearest'
'zero'
'slinear'
'quadratic'
'cubic'
。最后三个是样条线顺序,
“线性”
是不言自明的。
'nearest'
'zero'
做什么?

'nearest'返回从X到参数最近的数据点,或者
使用最接近x的数据点在点x处插值函数y=f(x)

我猜“零”相当于截断参数,因此使用最接近零的数据点
  • 最近的
    “捕捉”到最近的数据点
  • zero
    是一条零阶样条曲线。它在任何点上的值都是最后看到的原始值
  • linear
    执行线性插值,并且
    slinear
    使用第一个 顺序样条曲线。他们使用不同的代码和代码
  • 二次
    使用二阶样条插值
  • cubic
    使用三次样条插值
  • 请注意,
    k
    参数也可以接受指定样条曲线插值顺序的整数



    linear和slinear在某些病理情况下并不总是产生相同的结果,请参见@StevePike:这很有趣,但看起来这可能是熊猫特有的问题,而不是scipy。也就是说,当我将您的数据调整到上面的代码时(没有熊猫),
    interpolate.interp1d
    似乎仍然在
    kind='linear'
    kind='slinear'
    时产生相同的结果。。抢手货我以为熊猫只是通过它。。。愚蠢!非常令人困惑。实际上,scipy确实不同,请参见更新的测试——熊猫和scipy在这里是相同的——尽管它们在绘图上看起来相同,但它们是不同的值,这在某些情况下非常重要,不能假设它们是相同的@史蒂夫派克:谢谢你仔细的追踪和编辑。
    import numpy as np
    import matplotlib.pyplot as plt
    import scipy.interpolate as interpolate
    
    np.random.seed(6)
    kinds = ('nearest', 'zero', 'linear', 'slinear', 'quadratic', 'cubic')
    
    N = 10
    x = np.linspace(0, 1, N)
    y = np.random.randint(10, size=(N,))
    
    new_x = np.linspace(0, 1, 28)
    fig, axs = plt.subplots(nrows=len(kinds)+1, sharex=True)
    axs[0].plot(x, y, 'bo-')
    axs[0].set_title('raw')
    for ax, kind in zip(axs[1:], kinds):
        new_y = interpolate.interp1d(x, y, kind=kind)(new_x)
        ax.plot(new_x, new_y, 'ro-')
        ax.set_title(kind)
    
    plt.show()