SciPy 插值

2025年3月17日 | 阅读 3 分钟

插值定义为在一条线或曲线上找到两点之间的值。单词的第一部分是 "inter",意思是 "进入",这表明我们要在数据内部查找。换句话说,"在精确的数据点之间估计中间值称为插值"。插值在统计学、科学和商业中非常有用,或者当需要预测存在于两个现有数据点之间的值时。

让我们看一下如何使用 scipy.interpolation 包进行插值。

它将以数组的形式给出以下输出。np.linspace() 函数返回给定数字之间的间隔。

输出

[0.        0.55555556 1.11111111 1.66666667 2.22222222 2.77777778
 3.33333333 3.88888889 4.44444444 5.] 
[-0.65364362 -0.57246439 -0.29634775  0.21191783  0.80382736  0.95857746
  0.14971294 -0.92731369 -0.39972072  0.97296947]

我们可以将这些数组绘制为空间中点的二维,让我们考虑以下示例

输出

SciPy Interpolation

一维插值

scipy.interpolation 提供了 interp1d 类,这是一个有用的方法,用于基于固定数据点创建函数。

通过使用上述数据,创建一个插值函数并绘制一个新的插值图。

输出

SciPy Interpolation

在上面的程序中,我们创建了两个函数 fun1 和 fun2。变量 x 包含样本点,变量 y 包含对应的值。第三个变量 kind 代表插值技术的类型。插值有多种方法。这些方法如下所示:

  • 线性
  • 最近邻插值
  • 线性插值
  • 二次插值
  • 三次插值

样条插值

样条是一种用于通过指定的一组点生成平滑曲线的柔性条带。样条插值需要两个基本步骤。在第一步中,计算曲线的样条表示,在第二步中,在所需点处评估样条。

SciPy Interpolation

有两种方法可以表示曲线。首先,使用直接样条方法,使用函数 splrep() 在二维平面中找到曲线的样条表示。默认的样条阶数为三次,但可以使用输入关键字 k 进行更改。

splprep() 允许我们以 N 维空间 参数化 定义曲线。关键字参数用于指定在样条拟合期间要执行的平滑量。

标准输出是一个三元组 (t,c,k),其中 t 代表节点,c 代表系数,k 代表样条的阶数。

单变量样条

scipy.interpolate 提供了 UnivariateSpline 类,这是一种基于固定数据点创建函数的合适方法。语法如下所示:

参数-

w- 它指定用于样条拟合的权重。它必须是正数。

s- 它通过指定平滑条件来指定结(点)的数量。

k- 它表示平滑样条的度数。必须是 k<= 5。默认情况下,k = 3,即三次样条。

  • Ext - 它控制不在由结序列定义的区间内的元素的推断模式。
    • 如果 ext = 0 或 'extrapolate',则返回推断值。
    • 如果 ext = 1 或 'zero',则返回 0
    • 如果 ext = 2 或 'raise',则引发 ValueError
    • 如果 ext = 3 或 'const',则返回边界值。
  • check_finite - 检查输入数组是否仅包含有限数字。

让我们看下面的例子

输出

SciPy Interpolation
下一个主题SciPy 输入和输出