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使用fcntl模块实现程序加锁功能示例
Jun 23 Python
将python代码和注释分离的方法
Apr 21 Python
python opencv实现运动检测
Jul 10 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
Jan 08 Python
python使用Plotly绘图工具绘制气泡图
Apr 01 Python
Pycharm简单使用教程(入门小结)
Jul 04 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
python异常处理try except过程解析
Feb 03 Python
Python run()函数和start()函数的比较和差别介绍
May 03 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
Oct 31 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 Python
python基于Kivy写一个图形桌面时钟程序
Jan 28 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父类调用子类方法的代码例子
2014/04/09 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
jQuery 学习 几种常用方法
2009/06/11 Javascript
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
手机端实现Bootstrap简单图片轮播效果
2016/10/13 Javascript
loading动画特效小结
2017/01/22 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
从零开始搭建一个react项目开发
2018/02/09 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
2020/07/11 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
python遍历目录的方法小结
2016/04/28 Python
使用Kivy将python程序打包为apk文件
2017/07/29 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
日本航空官方网站:JAL
2019/06/19 全球购物
Linux面试经常问的文件系统操作命令
2016/10/04 面试题
装潢设计实习自我鉴定
2013/09/19 职场文书
计算机应用毕业生自荐信
2013/10/23 职场文书
七年级英语教学反思
2014/01/15 职场文书
地理教师岗位职责
2014/03/16 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
六一儿童节新闻稿
2015/07/17 职场文书
2019秋季运动会口号
2019/06/25 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang