python使用插值法画出平滑曲线


Posted in Python onDecember 15, 2018

本文实例为大家分享了python使用插值法画出平滑曲线的具体代码,供大家参考,具体内容如下

实现所需的库

numpy、scipy、matplotlib

实现所需的方法

插值

  • nearest:最邻近插值法
  • zero:阶梯插值
  • slinear:线性插值
  • quadratic、cubic:2、3阶B样条曲线插值

拟合和插值的区别

简单来说,插值就是根据原有数据进行填充,最后生成的曲线一定过原有点。

拟合是通过原有数据,调整曲线系数,使得曲线与已知点集的差别(最小二乘)最小,最后生成的曲线不一定经过原有点。

代码实现

# -*- coding: utf-8 -*-

# 调用模块
# 调用数组模块
import numpy as np
# 实现插值的模块
from scipy import interpolate
# 画图的模块
import matplotlib.pyplot as plt
# 生成随机数的模块
import random

# random.randint(0, 10) 生成0-10范围内的一个整型数
# y是一个数组里面有10个随机数,表示y轴的值
y = np.array([random.randint(0, 10) for _ in range(10)])
# x是一个数组,表示x轴的值
x = np.array([num for num in range(10)])

# 插值法之后的x轴值,表示从0到9间距为0.5的18个数
xnew = np.arange(0, 9, 0.5)

"""
kind方法:
nearest、zero、slinear、quadratic、cubic
实现函数func
"""
func = interpolate.interp1d(x, y, kind='cubic')
# 利用xnew和func函数生成ynew,xnew的数量等于ynew数量
ynew = func(xnew)

# 画图部分
# 原图
plt.plot(x, y, 'ro-')
# 拟合之后的平滑曲线图
plt.plot(xnew, ynew)
plt.show()

注意事项/p>

  • x, y为原来的数据(少量)
  • xnew为一个数组,条件:x⊆⊆xnew
  •       如:x的最小值为-2.931,最大值为10.312;则xnew的左边界要小于-2.931,右边界要大于10.312。当然也最好注意一下间距,最好小于x中的精度
  • func为函数,里面的参数x、y、kind,x,y就是原数据的x,y,kind为需要指定的方法
  • ynew需要通过xnew数组和func函数来生成
  • 理论上xnew数组内的值越多,生成的曲线越平滑

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现猜数字游戏(无重复数字)示例分享
Mar 29 Python
Linux下使用python调用top命令获得CPU利用率
Mar 10 Python
Python代码调试的几种方法总结
Apr 15 Python
Python中音频处理库pydub的使用教程
Jun 07 Python
Python实现字符串与数组相互转换功能示例
Sep 22 Python
matplotlib设置legend图例代码示例
Dec 19 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
Mar 01 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
Aug 27 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
python音频处理的示例详解
Dec 23 Python
pytorch 6 batch_train 批训练操作
May 28 Python
Python 中的 copy()和deepcopy()
Nov 07 Python
python用fsolve、leastsq对非线性方程组求解
Dec 15 #Python
python实现一组典型数据格式转换
Dec 15 #Python
python判断计算机是否有网络连接的实例
Dec 15 #Python
Django model反向关联名称的方法
Dec 15 #Python
django orm 通过related_name反向查询的方法
Dec 15 #Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
Dec 15 #Python
django 外键model的互相读取方法
Dec 15 #Python
You might like
PHP 和 MySQL 基础教程(一)
2006/10/09 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
理解JavaScript中的事件
2006/09/23 Javascript
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
ExtJs的Date格式字符代码
2010/12/30 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
利用谷歌地图API获取点与点的距离的js代码
2012/10/11 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
python识别验证码的思路及解决方案
2020/09/13 Python
python中time包实例详解
2021/02/02 Python
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
请解释virtual关键字的含义
2015/06/17 面试题
非常详细的C#面试题集
2016/07/13 面试题
毕业生的求职信范文分享
2013/12/04 职场文书
体育教师自荐信范文
2013/12/16 职场文书
办公室主任先进事迹
2014/01/18 职场文书
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
三问三解心得体会
2014/09/05 职场文书
2015年父亲节活动总结
2015/02/12 职场文书
亮剑观后感
2015/06/05 职场文书
2016党校学习心得体会
2016/01/07 职场文书
初中数学课堂教学反思
2016/02/17 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书