SciPy 教程 之 SciPy 插值 1
SciPy 插值
什么是插值?
在数学的数值分析领域中,插值(英语:interpolation)是一种通过已知的、离散的数据点,在范围内推求新数据点的过程或方法。
简单来说插值是一种在给定的点之间生成点的方法。
例如:对于两个点 1 和 2,我们可以插值并找到点 1.33 和 1.66。
插值有很多用途,在机器学习中我们经常处理数据缺失的数据,插值通常可用于替换这些值。
这种填充值的方法称为插补。
除了插补,插值经常用于我们需要平滑数据集中离散点的地方。
如何在 SciPy 中实现插值?
SciPy 提供了 scipy.interpolate 模块来处理插值。
一维插值
一维数据的插值运算可以通过方法 interp1d() 完成。
该方法接收两个参数 x 点和 y 点。
返回值是可调用函数,该函数可以用新的 x 调用并返回相应的 y,y = f(x)。
对给定的 xs 和 ys 插值,从 2.1、2.2... 到 2.9:
实例
from scipy.interpolate import interp1d
import numpy as np
xs = np.arange(10)
ys = 2*xs + 1
interp_func = interp1d(xs, ys)
newarr = interp_func(np.arange(2.1, 3, 0.1))
print(newarr)
输出结果为:
[5.2 5.4 5.6 5.8 6. 6.2 6.4 6.6 6.8]
注意:新的 xs 应该与旧的 xs 处于相同的范围内,这意味着我们不能使用大于 10 或小于 0 的值调用 interp_func()。