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 相关文章推荐
动态创建类实例代码
Oct 07 Python
Python聊天室程序(基础版)
Apr 01 Python
Python sorted函数详解(高级篇)
Sep 18 Python
Flask框架中request、请求钩子、上下文用法分析
Jul 23 Python
Python使用贪婪算法解决问题
Oct 22 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
Python闭包与装饰器原理及实例解析
Apr 30 Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 Python
java关于string最常出现的面试题整理
Jan 18 Python
理解python中装饰器的作用
Jul 21 Python
python+pyhyper实现识别图片中的车牌号思路详解
Dec 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
PHP项目开发中最常用的自定义函数整理
2010/12/02 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
PHP获取MAC地址的具体实例
2013/12/13 PHP
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
vue 自定义 select内置组件
2018/04/10 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
[48:00]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第二场 11.04
2020/11/04 DOTA
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
Python创建文件和追加文件内容实例
2014/10/21 Python
Python计算回文数的方法
2015/03/11 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
中职应届生会计求职信
2013/10/23 职场文书
先进党支部事迹材料
2014/01/13 职场文书
创新比赛获奖感言
2014/02/13 职场文书
暑期培训心得体会
2014/09/02 职场文书
车贷收入证明范本
2014/09/14 职场文书
毕业生见习报告总结
2014/11/08 职场文书
办公楼租房协议书范本
2014/11/25 职场文书
员工手册编写范本
2015/05/14 职场文书
2015年重阳节主持词
2015/07/04 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
python中%格式表达式实例用法
2021/06/18 Python
python元组打包和解包过程详解
2021/08/02 Python
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python
TS 类型兼容教程示例详解
2022/09/23 Javascript