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 09 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
Oct 06 Python
Python笔记之代理模式
Nov 20 Python
python如何使用Redis构建分布式锁
Jan 16 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
Mar 05 Python
Django 再谈一谈json序列化
Mar 16 Python
Python 自由定制表格的实现示例
Mar 20 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
May 28 Python
python用什么编辑器进行项目开发
Jun 17 Python
详解vscode实现远程linux服务器上Python开发
Nov 10 Python
详解Go语言运用广度优先搜索走迷宫
Jun 23 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使用websocket示例详解
2014/03/12 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
PHP中串行化用法示例
2016/11/16 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
2017/08/04 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
JS Math对象与Math方法实例小结
2019/07/05 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
解决Vue动态加载本地图片问题
2019/10/09 Javascript
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
利用Python实现Windows定时关机功能
2017/03/21 Python
python清理子进程机制剖析
2017/11/23 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
Appium+python自动化怎么查看程序所占端口号和IP
2019/06/14 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
python实现倒计时小工具
2019/07/29 Python
python 爬取疫情数据的源码
2020/02/09 Python
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
Oracle性能调优原则
2012/05/03 面试题
应届生求职信写作技巧
2013/10/24 职场文书
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
《小熊住山洞》教学反思
2014/02/21 职场文书
理工大学毕业生自荐信范文
2014/02/22 职场文书
团队队名口号大全
2014/06/06 职场文书
竞聘自述材料
2014/08/25 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
购房协议书范本
2014/10/02 职场文书
学校食品安全责任书
2015/01/29 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
2016年第104个国际护士节活动总结
2016/04/06 职场文书
如何用PHP websocket实现网页实时聊天
2021/05/26 PHP
pt-archiver 主键自增
2022/04/26 MySQL