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中xrange与yield的用法实例分析
Dec 26 Python
快速了解Python开发中的cookie及简单代码示例
Jan 17 Python
Python异常处理操作实例详解
May 10 Python
DRF跨域后端解决之django-cors-headers的使用
Jan 27 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
Feb 22 Python
python3.6环境安装+pip环境配置教程图文详解
Jun 20 Python
numpy.array 操作使用简单总结
Nov 08 Python
Pandas —— resample()重采样和asfreq()频度转换方式
Feb 26 Python
python实现图片横向和纵向拼接
Mar 05 Python
详解anaconda离线安装pytorchGPU版
Sep 08 Python
如何在 Matplotlib 中更改绘图背景的实现
Nov 26 Python
Python用户自定义异常的实现
Dec 25 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多用户读写文件冲突的解决办法
2013/11/06 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
js树形控件脚本代码
2008/07/24 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
python简单实现旋转图片的方法
2015/05/30 Python
使用python加密自己的密码
2015/08/04 Python
剖析Python的Twisted框架的核心特性
2016/05/25 Python
Python 中的with关键字使用详解
2016/09/11 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
Python Merge函数原理及用法解析
2020/09/16 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
创先争优制度
2014/01/21 职场文书
慈善晚会策划方案
2014/05/14 职场文书
小学生六年级作文之关于感恩
2019/08/16 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
关于golang高并发的实现与注意事项说明
2021/05/08 Golang
python 经纬度求两点距离、三点面积操作
2021/06/03 Python
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
MySQL分区表实现按月份归类
2021/11/01 MySQL
springboot用户数据修改的详细实现
2022/04/06 Java/Android