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获取Linux系统的各种信息
Jul 10 Python
跟老齐学Python之关于类的初步认识
Oct 11 Python
python列表操作之extend和append的区别实例分析
Jul 28 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
异步任务队列Celery在Django中的使用方法
Jun 07 Python
python3实现windows下同名进程监控
Jun 21 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
python模拟鼠标点击和键盘输入的操作
Aug 04 Python
Python 使用 docopt 解析json参数文件过程讲解
Aug 13 Python
django自定义非主键自增字段类型详解(auto increment field)
Mar 30 Python
Python插件机制实现详解
May 04 Python
Django设置Postgresql的操作
May 14 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
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
解析thinkphp中的导入文件标签
2013/06/20 PHP
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
php在线解压ZIP文件的方法
2014/12/30 PHP
php实现的顺序线性表示例
2019/05/04 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
ppk谈JavaScript style属性
2008/10/10 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
python实现的jpg格式图片修复代码
2015/04/21 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
Python进行统计建模
2020/08/10 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
2014年党员承诺书范文
2014/05/20 职场文书
学生吸烟检讨书
2014/09/14 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫