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 当前全局变量和入口参数的所有属性
Jul 01 Python
Python3使用requests包抓取并保存网页源码的方法
Mar 15 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
May 31 Python
Python实现SMTP发送邮件详细教程
Mar 02 Python
在python中获取div的文本内容并和想定结果进行对比详解
Jan 02 Python
在交互式环境中执行Python程序过程详解
Jul 12 Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 Python
Python 中的 global 标识对变量作用域的影响
Aug 12 Python
Python数据分析模块pandas用法详解
Sep 04 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
Apr 14 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
May 27 Python
Django项目如何正确配置日志(logging)
Apr 29 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抓取https的内容的代码
2010/04/06 PHP
解析php中heredoc的使用方法
2013/06/17 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
PHP+MySql+jQuery实现的"顶"和"踩"投票功能
2016/05/21 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
js中关于new Object时传参的一些细节分析
2011/03/13 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
js遍历map javaScript遍历map的简单实现
2016/08/26 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
C#和SQL Server的面试题
2016/08/12 面试题
新闻编辑求职信
2014/04/09 职场文书
《去年的树》教学反思
2014/04/11 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
我的大学四年规划书范文2014
2014/09/26 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
会计工作总结范文2014
2014/12/23 职场文书
年会主持人开场白台词
2015/05/29 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技