python多项式拟合之np.polyfit 和 np.polyld详解


Posted in Python onFebruary 18, 2020

python数据拟合主要可采用numpy库,库的安装可直接用pip install numpy等。

1. 原始数据:假如要拟合的数据yyy来自sin函数,np.sin

import numpy as np
import matplotlib.pyplot as plt

xxx = np.arange(0, 1000) # x值,此时表示弧度
yyy = np.sin(xxx*np.pi/180) #函数值,转化成度

2. 测试不同阶的多项式,例如7阶多项式拟合,使用np.polyfit拟合,np.polyld得到多项式系数

z1 = np.polyfit(xxx, yyy, 7) # 用7次多项式拟合,可改变多项式阶数;
p1 = np.poly1d(z1) #得到多项式系数,按照阶数从高到低排列
print(p1) #显示多项式

3. 求对应xxx的各项拟合函数值

yvals=p1(xxx) # 可直接使用yvals=np.polyval(z1,xxx)

4. 绘图如下

plt.plot(xxx, yyy, '*',label='original values')
plt.plot(xxx, yvals, 'r',label='polyfit values')
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.legend(loc=4) # 指定legend在图中的位置,类似象限的位置
plt.title('polyfitting')
plt.show()

5. np.polyfit函数:采用的是最小二次拟合,numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False),前三个参数是必须的

官方文档:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.polyfit.html

6. np.polyld函数:得到多项式系数,主要有三个参数

A one-dimensional polynomial class.

  A convenience class, used to encapsulate "natural" operations on
  polynomials so that said operations may take on their customary
  form in code (see Examples).

  Parameters
  ----------
  c_or_r : array_like
    The polynomial's coefficients, in decreasing powers, or if
    the value of the second parameter is True, the polynomial's
    roots (values where the polynomial evaluates to 0). For example,
    ``poly1d([1, 2, 3])`` returns an object that represents
    :math:`x^2 + 2x + 3`, whereas ``poly1d([1, 2, 3], True)`` returns
    one that represents :math:`(x-1)(x-2)(x-3) = x^3 - 6x^2 + 11x -6`.
  r : bool, optional
    If True, `c_or_r` specifies the polynomial's roots; the default
    is False.
  variable : str, optional
    Changes the variable used when printing `p` from `x` to `variable`
    (see Examples).

参数1表示:在没有参数2(也就是参数2默认False时),参数1是一个数组形式,且表示从高到低的多项式系数项,例如参数1为[4,5,6]表示:

参数2表示:为True时,表示将参数1中的参数作为根来形成多项式,即参数1为[4,5,6]时表示:(x-4)(x-5)(x-6)=0,也就是:

参数3表示:换参数标识,用惯了x,可以用 t,s之类的

用法:

1. 直接进行运算,例如多项式的平方,分别得到

xx=np.poly1d([1,2,3])
print(xx)
yy=xx**2 #求平方,或者用 xx * xx
print(yy)

2. 求值:

yy(1) = 36

3. 求根:即等式为0时的未知数值

yy.r

4. 得到系数形成数组:

yy.c 为:array([ 1, 4, 10, 12, 9])

5. 返回最高次幂数:

yy.order = 4

6. 返回系数:

yy[0] —— 表示幂为0的系数

yy[1] —— 表示幂为1的系数

总结

以上所述是小编给大家介绍的python多项式拟合之np.polyfit 和 np.polyld详解,希望对大家有所帮助,也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
跟老齐学Python之关于类的初步认识
Oct 11 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
Apr 20 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 Python
python正则表达式之对号入座篇
Jul 24 Python
python获取中文字符串长度的方法
Nov 14 Python
Python中的支持向量机SVM的使用(附实例代码)
Jun 26 Python
python实现复制大量文件功能
Aug 31 Python
python错误调试及单元文档测试过程解析
Dec 19 Python
Pytoch之torchvision.transforms图像变换实例
Dec 30 Python
DjangoWeb使用Datatable进行后端分页的实现
May 18 Python
Python如何使用logging为Flask增加logid
Mar 30 Python
Python中npy和mat文件的保存与读取
Apr 24 Python
tensorflow 分类损失函数使用小记
Feb 18 #Python
python如何把字符串类型list转换成list
Feb 18 #Python
python计算波峰波谷值的方法(极值点)
Feb 18 #Python
Python表达式的优先级详解
Feb 18 #Python
使用Tkinter制作信息提示框
Feb 18 #Python
Python中import导入不同目录的模块方法详解
Feb 18 #Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 #Python
You might like
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
javascript获取当前ip的代码
2009/05/10 Javascript
js控制div及网页相关属性的代码
2009/12/19 Javascript
用js脚本控制asp.net下treeview的NodeCheck的实现代码
2010/03/02 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
vue实现文件上传功能
2018/08/13 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
2020/02/19 Javascript
[03:12]2016完美“圣”典风云人物:单车专访
2016/12/02 DOTA
[48:26]VGJ.S vs infamous Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
Python日期操作学习笔记
2008/10/07 Python
从零学Python之入门(二)基本数据类型
2014/05/25 Python
跟老齐学Python之集成开发环境(IDE)
2014/09/12 Python
用python实现面向对像的ASP程序实例
2014/11/10 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
Python实现快速计算词频功能示例
2018/06/25 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
Python 统计位数为偶数的数字代码详解
2020/03/15 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
某公司的.net工程师面试题笔试题
2013/11/22 面试题
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
外语系毕业生求职自荐信
2014/04/12 职场文书
庆祝国庆节标语
2014/10/09 职场文书
2015年教研员工作总结
2015/05/26 职场文书
五年级作文之劳动作文
2019/11/12 职场文书