python一维数据插值_python玄学建模(4):插值(一维)

本文介绍了Scipy库中的interp1d类,用于一维插值。interp1d接受x和y值,通过指定插值方式(如线性、最近邻等)创建插值函数。参数包括插值方式(kind)、处理超出范围查询的方式(bounds_error和fill_value)等。示例展示了如何使用 interp1d 进行插值计算并绘制结果。对于多维y的情况,可以对每一维分别进行插值。
摘要由CSDN通过智能技术生成

官方文档链接:https://docs.scipy.org/doc/scipy-1.3.0/reference/generated/scipy.interpolate.interp1d.html#scipy.interpolate.interp1d

scipy库中可以通过interp1d类来实现一维插值

照例还是官方文档的翻译与解释

类原型:classscipy.interpolate.interp1d(x, y, kind='linear', axis=-1, copy=True, bounds_error=None, fill_value=nan, assume_sorted=False)

interp1d的使用非常简单,参数不多但每个都比较重要,就都介绍一下吧

x:一维数组,插值点的x值;

y:一维或多维数组,参与插值的维度的长度要与x一致;

kind:最重要的参数,选择插值方式,包含线性插值、最近邻插值、三次样条插值等常用插值算法,具体可见官方文档;

axis:指定针对y的哪一维进行插值,默认为最后一维;

copy:bool型变量,选择是否复制x与y,默认为True,若为False则会使用x与y的引用;

bounds_error:bool型变量,True时对所有超出x范围的查询均报错,False时则使用fill_value中实现定义的方法,默认为None,当超出查询范围时,除非填充方法是外插(extrapolate),则会报错;

fill_value:对超出x范围的值的填充方法,有以下几种类型:

ndarray或者float:指定固定的填充值;

两元素tuple:分别指定x范围左边和右边的填充值;

'extrapolate':进行外插;

assume_sotred:bool型变量,默认为False,即不假设输入的x是有序的,会自动对x与y进行排序,如果本来就有序可以设置为True;

(其实只要清楚插值算法的大致流程,这些参数都很好理解)

官网的代码示例如下

>>> importmatplotlib.pyplot as plt>>> from scipy importinterpolate>>> x = np.arange(0, 10)>>> y = np.exp(-x/3.0)>>> f =interpolate.interp1d(x, y)>>> xnew = np.arange(0, 9, 0.1)>>> ynew = f(xnew) #use interpolation function returned by `interp1d`

>>> plt.plot(x, y, 'o', xnew, ynew, '-')>>> plt.show()

要注意的一点是interp1d是类而不是函数,其返回值是一个函数,然后通过使用普通python函数的方法来得到插值结果。

对于y是多维的情况,文档中没有给出示例,下面是我写的一个简单例子:

importnumpy as npimportmatplotlib.pyplot as pltfrom scipy importinterpolate

x= np.arange(0,10)

y1= x*x

y2= x*x*x

y=np.stack([y1,y2])

func=interpolate.interp1d(x,y)

xnew= np.arange(0,9,0.1)

ynew=func(xnew)

plt.plot(xnew,ynew.T)#由于interp1d和plot对维度的要求不一致,这里对ynew进行一次转置,否则会报错

可视化结果如图所示:

y有多行的情况就是对多组y值分别进行插值,之间互不影响。

以上就是用scipy进行一维插值的基本方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值