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 mysqldb连接数据库
Mar 16 Python
python中正则表达式的使用详解
Oct 17 Python
Python中使用Boolean操作符做真值测试实例
Jan 30 Python
用Python展示动态规则法用以解决重叠子问题的示例
Apr 02 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
Python爬取qq music中的音乐url及批量下载
Mar 23 Python
Python字典底层实现原理详解
Dec 18 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
提升python处理速度原理及方法实例
Dec 25 Python
pyenv虚拟环境管理python多版本和软件库的方法
Dec 26 Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
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的安全
2006/10/09 PHP
thinkPHP查询方式小结
2016/01/09 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
jQuery实现强制cookie过期方法汇总
2015/05/22 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
2016/09/17 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
webpack+react+antd脚手架优化的方法
2018/04/02 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
python 开发的三种运行模式详细介绍
2017/01/18 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
Python实现简单求解给定整数的质因数算法示例
2018/03/25 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
python格式化输出保留2位小数的实现方法
2019/07/02 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
基于django micro搭建网站实现加水印功能
2020/05/22 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
英超联赛的首选足球:Mitre足球
2019/05/06 全球购物
Java模拟试题
2014/11/10 面试题
致跳远、跳高运动员广播稿
2014/01/09 职场文书
失恋33天观后感
2015/06/11 职场文书
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android