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判断字符串是否纯数字的方法
Nov 19 Python
Python Nose框架编写测试用例方法
Oct 26 Python
Python读写/追加excel文件Demo分享
May 03 Python
面向初学者的Python编辑器Mu
Oct 08 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 Python
python语言线程标准库threading.local解读总结
Nov 10 Python
python 实现查询Neo4j多节点的多层关系
Dec 23 Python
利用python中集合的唯一性实现去重
Feb 11 Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 Python
python和c语言哪个更适合初学者
Jun 22 Python
拒绝盗图!教你怎么用python给图片加水印
Jun 04 Python
python数据分析之单因素分析线性拟合及地理编码
Jun 25 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
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
JS 判断代码全收集
2009/04/28 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
angularjs自定义ng-model标签的属性
2016/01/21 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
js基于canvas实现时钟组件
2021/02/07 Javascript
JS实现百度搜索框
2021/02/25 Javascript
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
python日志模块logbook使用方法
2019/09/19 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
python 生成器需注意的小问题
2020/09/29 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
2013/04/24 面试题
关于运动会的稿件
2014/02/02 职场文书
上党课的心得体会
2014/09/02 职场文书
计划生育证明格式范本
2014/09/12 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
优秀班主任主要事迹材料
2014/12/16 职场文书
2015年双拥工作总结
2015/04/08 职场文书
2016年元旦寄语
2015/08/17 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
MySQL日期时间函数知识汇总
2022/03/17 MySQL