Python教程

python实现数据插值

本文主要是介绍python实现数据插值,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

python实现数据插值

  • 1、调用Python的scipy.interpolate库
  • 2、自己拟合函数
      • 多项式函数拟合
  • 3、可能出现的问题
    • 问题1:
    • 解决办法:

1、调用Python的scipy.interpolate库

#定义插值函数
f = interpolate.interp1d(x,y,kind='cubic')  # x代表已有的数据量少的数据 #y代表与已有的x对应的值
##例如:
x--pdr的时间
y--pdr的x轴的距离值
##调用插值函数f
y_new = f(x_new)  
##例如:
x_new--yaw的时间
y--yaw时间对应的距离值
#插值方式选取

 - nearest:最邻近插值法
 - zero:阶梯插值
 - slinear/linerar:线性插值
 - quadratic/cubic:二阶和三阶B样条曲线

2、自己拟合函数

多项式函数拟合

f = np.polyfit(x,y,n)
--n--阶数
p = np.poly1d(f)
y_new = p(x_new)

举例:

pdr_time = np.array(pdr.loc[:,0])
pdr_x =np.array(pdr.loc[:,1])
f1 = np.polyfit(pdr_time,pdr_x,10) 
p1 = np.poly1d(f1)
print('p1 is :\n',p1)

yvals = p1(pdr_time) 

3、可能出现的问题

问题1:

关于python出现ValueError: A value in x_new is below the interpolation range.的解决方法
这个问题是由于待插值的数据超出了用于拟合函数的数据的范围,无法完成超过范围的差值。

解决办法:

添加边界值,例如在pdr数据添加0时刻的初始值
参考链接

这篇关于python实现数据插值的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!