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除法运算小技巧
Apr 05 Python
Python读取一个目录下所有目录和文件的方法
Jul 15 Python
详解Python数据分析--Pandas知识点
Mar 23 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
Python绘制股票移动均线的实例
Aug 24 Python
python with (as)语句实例详解
Feb 04 Python
pytorch中图像的数据格式实例
Feb 11 Python
使用sklearn对多分类的每个类别进行指标评价操作
Jun 11 Python
python获取系统内存占用信息的实例方法
Jul 17 Python
python实现腾讯滑块验证码识别
Apr 27 Python
安装pytorch时报sslerror错误的解决方案
May 17 Python
Jupyter Notebook内使用argparse报错的解决方案
Jun 03 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的返回引用和局部静态变量
2015/06/04 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
轻松实现php文件上传功能
2017/02/17 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
jquery 插件学习(五)
2012/08/06 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
package.json各个属性说明详解
2020/03/11 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
python正则表达式match和search用法实例
2015/03/26 Python
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
python实现键盘控制鼠标移动
2020/11/27 Python
python set内置函数的具体使用
2019/07/02 Python
python常用排序算法的实现代码
2019/11/08 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
html5绘制时钟动画
2014/12/15 HTML / CSS
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
Java程序员常见面试题
2015/07/16 面试题
Java语言程序设计测试题改错题部分
2014/07/22 面试题
护士检查书
2014/01/17 职场文书
行政复议决定书
2015/06/24 职场文书
教师学习心得体会范文
2016/01/21 职场文书