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下的Mysql模块MySQLdb安装详解
Apr 09 Python
基于python实现的抓取腾讯视频所有电影的爬虫
Apr 22 Python
python os用法总结
Jun 08 Python
python简单区块链模拟详解
Jul 03 Python
如何利用Pyecharts可视化微信好友
Jul 04 Python
python实现Oracle查询分组的方法示例
Apr 30 Python
Python使用pdb调试代码的技巧
May 03 Python
使用Django搭建网站实现商品分页功能
May 22 Python
PyQT5 实现快捷键复制表格数据的方法示例
Jun 19 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 Python
Django解决frame拒绝问题的方法
Dec 18 Python
Ubuntu20下的Django安装的方法步骤
Jan 24 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
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
添加JavaScript重载函数的辅助方法2
2010/07/04 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
2008/09/06 Python
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
python实现可变变量名方法详解
2019/07/01 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
python实现学生通讯录管理系统
2021/02/25 Python
企业军训感想
2014/02/07 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
思想作风建设心得体会
2014/10/22 职场文书
暑期辅导班宣传单
2015/07/14 职场文书
英语导游欢迎词
2015/09/30 职场文书
Django框架中模型的用法
2022/06/10 Python
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle
SqlServer常用函数及时间处理小结
2023/05/08 SQL Server