Python 数值区间处理_对interval 库的快速入门详解


Posted in Python onNovember 16, 2018

使用 Python 进行数据处理的时候,常常会遇到判断一个数是否在一个区间内的操作。我们可以使用 if else 进行判断,但是,既然使用了 Python,那我们当然是想找一下有没有现成的轮子可以用。事实上,我们可以是用 interval 这一个库来完成我们需要的操作。

区间判断基础

最基础的区间判断操作就是先创建一个区间几个,然后使用 in 来判断一个数是否存在于区间之内。代码如下:

from interval import Interval
zoom_2_5 = Interval(2, 5)
print(zoom_2_5)
>> [2..5]
print(2 in zoom_2_5)
>> True
print(6 in zoom_2_5)
>> False

我们可以从上面的代码看到,我们先使用 Interval 创建一个集合,然后将我们想要比较的数用 in 即可得到结果。但是,我们都知道,我们的集合其实是有分开区间和闭区间的,上面的代码中,创建的是 [2, 5] 的区间集合,那么假如我们想要创建一个如 (2, 5] 的集合,应该如何呢?

请看下面的代码:

zoom_o2_5 = Interval(2, 5, lower_closed=False)
print(zoom_o2_5)
>> (2..5]
print(2 in zoom_o2_5)
>> False
zoom_o2_o5 = Interval(2, 5, closed=False)
print(zoom_o2_o5)
>> (2..5)

从上面的代码可以看到,在使用 Interval 创建集合的时候,使用 lower_closed 参数,我们可以将集合区间下限设置为非闭区间,也就是开区间,这样我们比较 2 是否在这个区间里的时候,返回的结果是 False。类似的,如果想区间上限设置为开区间,可以将 upper_closed 设置为 False,如果想直接创建一个开区间,那么久可以直接设置 closed 为 False。

集合的操作

Interval 有三种对集合区间的操作方法,分别是 join overlaps adjacent_to ,以下将演示以下这三个方法的用法:

zoom_1_3 = Interval(1, 3)
zoom_1_5 = Interval(1, 5)
zoom_o3_5 = Interval(3, 5, lower_closed=False)
# join 合并两个连续的区间集合
print(zoom_1_3.join(zoom_1_5))
>> [1..5]
# overlaps 判断两个区间是否重复
print(zoom_1_3.overlaps(zoom_1_5))
>> True
print(zoom_1_3.overlaps(zoom_o3_5))
>> False
# adjacent_to 判断区间是否相邻比重复
print(zoom_1_3.adjacent_to(zoom_o3_5))
>> True

小结

interval 库还提供了 IntervalSet 包,里面提供了对多个 Interval 的操作,碍于篇幅的关系以及在实际应用中场景的不同具体用法也不一样,这里就不赘述了,向更深入了解可以使用 Ipython 进入交互模式然后使用 help() 方法来查看具体不同方法的用法,这个库里面都提供了详细的说明。本文的介绍就到这里,希望对你有帮助。

以上这篇Python 数值区间处理_对interval 库的快速入门详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python GAE、Django导出Excel的方法
Nov 24 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
由面试题加深对Django的认识理解
Jul 19 Python
Python爬虫学习之获取指定网页源码
Jul 30 Python
pandas如何处理缺失值
Jul 31 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
May 19 Python
Python加速程序运行的方法
Jul 29 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
Aug 17 Python
pycharm中leetcode插件使用图文详解
Dec 07 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 Python
Python与C++中梯度方向直方图的实现
Mar 17 Python
Pandas Shift函数的基础入门学习笔记
Nov 16 #Python
Python补齐字符串长度的实例
Nov 15 #Python
python实现对指定字符串补足固定长度倍数截断输出的方法
Nov 15 #Python
Python 输入一个数字判断成绩分数等级的方法
Nov 15 #Python
基于numpy中数组元素的切片复制方法
Nov 15 #Python
对Python中list的倒序索引和切片实例讲解
Nov 15 #Python
对pandas里的loc并列条件索引的实例讲解
Nov 15 #Python
You might like
最令PHP初学者头痛的十四个问题
2006/07/12 PHP
PHP SPL使用方法和他的威力
2013/11/12 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
PHP中STDCLASS用法实例分析
2016/11/11 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
IE图片缓存document.execCommand("BackgroundImageCache",false,true)
2011/03/01 Javascript
JS 有趣的eval优化输入验证实例代码
2013/09/22 Javascript
javascript实现控制的多级下拉菜单
2015/07/05 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
微信sdk实现禁止微信分享(使用原生php实现)
2019/11/15 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛 DT VS HGT
2014/05/22 DOTA
Pandas中把dataframe转成array的方法
2018/04/13 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
python3使用flask编写注册post接口的方法
2018/12/28 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
python基础 range的用法解析
2019/08/23 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
Python线程指南分享
2019/11/19 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
Ajxa常见问题都有哪些
2014/03/26 面试题
美化环境标语
2014/06/20 职场文书
演讲开场白和结束语
2015/05/29 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
在js中修改html body的样式
2021/11/11 Javascript