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之集合的关系
Sep 24 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
Apr 24 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
Python数据分析之获取双色球历史信息的方法示例
Feb 03 Python
利用pyshp包给shapefile文件添加字段的实例
Dec 06 Python
Python测试Kafka集群(pykafka)实例
Dec 23 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
Python %r和%s区别代码实例解析
Apr 03 Python
Python如何进行时间处理
Aug 06 Python
Python SQLAlchemy库的使用方法
Oct 13 Python
python实现扫雷游戏的示例
Oct 20 Python
利用python清除移动硬盘中的临时文件
Oct 28 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企业级应用之常见缓存技术篇
2011/01/27 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
一个tab标签切换效果代码
2009/03/27 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
vue实现表格过滤功能
2019/09/27 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
python使用Image处理图片常用技巧分析
2015/06/01 Python
python 中random模块的常用方法总结
2017/07/08 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
python版DDOS攻击脚本
2019/06/12 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
HTML5实现简单图片上传所遇到的问题及解决办法
2016/01/20 HTML / CSS
html5 div布局与table布局详解
2016/11/16 HTML / CSS
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
园林技术个人的自我评价
2014/02/15 职场文书
年级组长自我鉴定
2014/02/22 职场文书
安全标语口号
2014/06/09 职场文书
单位工作证明格式模板
2014/10/04 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
公司表扬稿范文
2015/05/05 职场文书
golang内置函数len的小技巧
2021/07/25 Golang