Numpy一维线性插值函数的用法


Posted in Python onApril 22, 2020

直接列出函数:

numpy.interp(x, xp, fp, left=None, right=None, period=None)

x - 表示将要计算的插值点x坐标

xp - 表示已有的xp数组

fp - 表示对应于已有的xp数组的值

left - 表示当x值在xp中最小值左边时,x对应y的值为left

right - 表示当x值在xp中最大值右边时,x对应y的值为right

(left和right表示x在xp的域外时,y的取值)

example:

1.

import numpy as np

xp = [1, 2, 3]
fp = [3, 2, 0]

print(np.interp(2.5, xp, fp))

output:1.0

2.

import numpy as np

xp = [1, 2, 3]
fp = [3, 2, 0]

x = [0, 1, 1.5, 2.72, 3.14]

print(np.interp(x, xp, fp))

output:[3. 3. 2.5 0.56 0. ]

3.

import numpy as np

xp = [1, 2, 3]
fp = [3, 2, 0]

x = [0, 1, 1.5, 2.72, 3.14]

print(np.interp(x, xp, fp, -99, 99))

output:[-99. 3. 2.5 0.56 99. ]

补充知识:numpy 的一维插值函数interp

numpy.interp(x, xp, fp, left=None, right=None, period=None)

返回离散数据的一维分段线性插值结果,浮点数或复数(对应于fp值)或ndarray. 插入数据的纵坐标,和x形状相同。

x: 数组,待插入数据的横坐标.

xp: 一维浮点数序列,原始数据点的横坐标,如果period参数没有指定那么就必须是递增的。否则,在使用xp = xp % period正则化之后,xp在内部进行排序.

fp: 一维浮点数或复数序列原始数据点的纵坐标,和xp序列等长.

left: 可选参数,类型为浮点数或复数(对应于fp值),当x < xp[0]时的插值返回值,默认为fp[0].

right: 可选参数,类型为浮点数或复数(对应于fp值),当x > xp[-1]时的插值返回值,默认为fp[-1].

period: None或者浮点数,可选参数. 横坐标的周期. 此参数使得可以正确插入angular x-coordinates. 如果该参数被设定,那么忽略left参数和right参数。

插入横坐标在原函数横坐标范围内

x = 2.5     # 要插入值的横坐标
xp = [1, 2, 3]   # 要插入序列的横坐标
fp = [3, 2, 0]   # 要插入序列的纵坐标
y = np.interp(x, xp, fp) # 返回插入值的纵坐标 1.0
plt.plot(xp, fp, '-o')
plt.plot(x, y, 'x')
plt.show()

插入横坐标在原函数横坐标外(默认)

x = [0, 1, 1.5, 2.72, 3.14] # 左侧外部默认为原函数最左侧函数值,右侧默认为右侧
xp = [1, 2, 3]
fp = [3, 2, 0]
y = np.interp(x, xp, fp) # array([ 3. ,3. ,2.5 ,0.56, 0. ])
plt.plot(xp, fp, '-o')
plt.plot(x, y, 'x')
plt.show()

插入横坐标在原函数横坐标外(指定)

x = 3.14
xp = [1, 2, 3]
fp = [3, 2, 0]
UNDEF = -99.0
y = np.interp(x, xp, fp, right=UNDEF) # -99.0
plt.plot(xp, fp, '-o')
plt.plot(x, y, 'x')
plt.show()

正弦插值

x = np.linspace(0, 2 * np.pi, 10) # 在0到2pi的范围内均匀取10个点
y = np.sin(x)      # sin函数x横坐标对应的y值
xvals = np.linspace(0, 2 * np.pi, 50) # 均匀取50个
yinterp = np.interp(xvals, x, y) # 在映射关系为y的x中插入xvals
plt.plot(x, y, 'o')
plt.plot(xvals, yinterp, '-x')
plt.show()

以上这篇Numpy一维线性插值函数的用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python函数式编程学习之yield表达式形式详解
Mar 25 Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 Python
python pandas 对series和dataframe的重置索引reindex方法
Jun 07 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
Jun 17 Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 Python
Python实现序列化及csv文件读取
Jan 19 Python
jupyter notebook的安装与使用详解
May 18 Python
浅谈Python程序的错误:变量未定义
Jun 02 Python
Python类的继承super相关原理解析
Oct 22 Python
python之PySide2安装使用及QT Designer UI设计案例教程
Jul 26 Python
Python自动操作神器PyAutoGUI的使用教程
Jun 16 Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 #Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
Apr 22 #Python
Jupyter Notebook折叠输出的内容实例
Apr 22 #Python
浅谈JupyterNotebook导出pdf解决中文的问题
Apr 22 #Python
django使用JWT保存用户登录信息
Apr 22 #Python
pandas中read_csv、rolling、expanding用法详解
Apr 21 #Python
Django如何使用jwt获取用户信息
Apr 21 #Python
You might like
Get或Post提交值的非法数据处理
2006/10/09 PHP
php编写一个简单的路由类
2011/04/13 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
Javascript----文件操作
2007/01/18 Javascript
JS 无限级 Select效果实现代码(json格式)
2011/08/30 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
学习python (1)
2006/10/31 Python
Python中map和列表推导效率比较实例分析
2015/06/17 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
详解python做UI界面的方法
2019/02/27 Python
python palywright库基本使用
2021/01/21 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
什么是反射?如何实现反射?
2016/07/25 面试题
2014年党支部书记工作总结
2014/12/04 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
AI:如何训练机器学习的模型
2021/04/16 Python
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL