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 21 Python
Python实现登录人人网并抓取新鲜事的方法
May 11 Python
详细讲解Python中的文件I/O操作
May 24 Python
Python实现希尔排序算法的原理与用法实例分析
Nov 23 Python
Django 登陆验证码和中间件的实现
Aug 17 Python
在Pycharm terminal中字体大小设置的方法
Jan 16 Python
python中import与from方法总结(推荐)
Mar 21 Python
python读取大文件越来越慢的原因与解决
Aug 08 Python
python实现复制文件到指定目录
Oct 16 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
Mar 13 Python
Python爬取股票信息,并可视化数据的示例
Sep 26 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 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文件夹与文件目录操作函数介绍
2013/09/09 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
jquery结合CSS使用validate实现漂亮的验证
2015/01/29 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
JavaScript中最常见的三个面试题解析
2017/03/04 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
解决vue项目axios每次请求session不一致的问题
2020/10/24 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
python3中property使用方法详解
2019/04/23 Python
python中比较两个列表的实例方法
2019/07/04 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
2019/12/03 Python
深入了解Python 方法之类方法 & 静态方法
2020/08/17 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
2020/11/19 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
更夫岗位责任制
2014/02/11 职场文书
畜牧兽医本科生的自我评价
2014/03/03 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
企业安全生产规章制度
2015/08/06 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
mysq启动失败问题及场景分析
2021/07/15 MySQL
JavaScript组合继承详解
2021/11/07 Javascript
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis
python和anaconda的区别
2022/05/06 Python