python使用插值法画出平滑曲线
作者:wnma3mz 发布时间:2021-07-14 03:59:02
标签:python,插值法,曲线
本文实例为大家分享了python使用插值法画出平滑曲线的具体代码,供大家参考,具体内容如下
实现所需的库
numpy、scipy、matplotlib
实现所需的方法
插值
nearest:最邻近插值法
zero:阶梯插值
slinear:线性插值
quadratic、cubic:2、3阶 * 条曲线插值
拟合和插值的区别
简单来说,插值就是根据原有数据进行填充,最后生成的曲线一定过原有点。
拟合是通过原有数据,调整曲线系数,使得曲线与已知点集的差别(最小二乘)最小,最后生成的曲线不一定经过原有点。
代码实现
# -*- 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数组内的值越多,生成的曲线越平滑
来源:https://blog.csdn.net/wnma3mz/article/details/78105760
0
投稿
猜你喜欢
- 有时候要用Javascript输常用的字符,比如每个页面都要有的脚注。这里提供一个转换脚本:将HTML自动转为JS代码<script&
- 无论是公司的同事还是外界的程序员朋友们,大部分人对JavaScript的高级应用不甚了解,已有的知识架构里会认为JavaScript仅仅是一
- 当地址栏没有参数"id"时: 代码如下:Request.QueryString["ID"] == n
- 本文实例讲述了php中常量DIRECTORY_SEPARATOR用法。分享给大家供大家参考。具体如下:DIRECTORY_SEPARATOR
- 相对于 Ajax,服务端 XMLHTTP 就是在服务端使用 XMLHttpRequest 对象了。虽然说,在服务端使用异步请求是比较不方便的
- BeautifulSoup简介Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。官方解释如下:Beautif
- 简述Motivationsometimes,换一种获取数据的方式,可以提高数据获取的速度。sometimes,由于预计爬取的数据长度不确定,
- python时间处理月份加减第三方模块 :python-dateutil安装方式:pip install python-dateutil实例
- Celery是Python开发分布式任务列队的处理库。可以异步分布式地异步处理任务,也可定时执行任务等等。通常我们可以使用celery在Dj
- 导言在前面我们学习了如何创建item级的DataList。和可编辑的GridView一样,每个DataList里的item都包含一个Edit
- 本文实例为大家分享了python实现单链表反转的具体代码,供大家参考,具体内容如下代码如下:class Node(object): 
- 本文介绍了python中的计时器timeit的使用方法,分享给大家,具体如下:timeit通常在一段程序的前后都用上time.time(),
- 本文实例讲述了Python实现的最近最少使用算法。分享给大家供大家参考。具体如下:# lrucache.py -- a simple LRU
- 1. 获取时间1.1 当前时间获取package mainimport ( "
- 问题:在论坛发表回复时出现“The table is full”的提示,字面意义上是数据表已满的意思。因为很少有开发者遭遇单一表超过4G的情
- 我正在参加天池上的一个竞赛,刚开始用的是DenseNet121但是效果没有达到预期,因此开始尝试使用模型融合,将Desenet和Xcepti
- 代码实现:<!DOCTYPE html><html lang="en"><head>
- 让 PHP 支持 MySQLPHP 有专有的 MySQL 函数库以使用操作 MYSQL 数据库。在 PHP 5 及以后版本中不再
- 有时候用phpMyAdmin的时候会突然出现这个错误信息 “无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP
- 1、Windows上anaconda安装配置mmdetection环境稍后再写2、将anaconda环境离线移植到另一台电脑首先将anaco