在scipy.interpolate.interp1d中,kind参数的不同值是什么意思?

时间:2014-12-30 01:49:22

标签: python scipy interpolation

SciPy documentation解释了interp1d kind参数可以采用值‘linear’‘nearest’‘zero’,{ {1}},‘slinear’‘quadratic’。最后三个是样条线顺序,‘cubic’是不言自明的。 'linear''nearest'做了什么?

2 个答案:

答案 0 :(得分:13)

  • nearest“捕捉”到最近的数据点。
  • zero是零阶样条曲线。它在任何时候的价值都是最后看到的原始价值。
  • linear执行线性插值,slinear使用第一个 订购样条。他们使用不同的代码和can produce similar but subtly different results
  • quadratic使用二阶样条插值。
  • cubic使用三阶样条插值。

请注意,k参数也可以接受指定样条插值顺序的整数。


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()

enter image description here

答案 1 :(得分:0)

'nearest'返回距离参数最近的X的数据点,或 interpolates function y=f(x) at the point x using the data point nearest to x

'零'我猜这相当于截断参数,因此使用最接近零的数据点