从numpy数组中取出满足条件的元素示例


Posted in Python onNovember 26, 2019

例如问题:从 arr 数组中提取所有奇数元素。

input:arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

output: #> array([1, 3, 5, 7, 9])

Solution:

#Input
 
>>> arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
 
#Solution
 
arr = arr[arr % 2 == 1]
 
>>> array([1, 3, 5, 7, 9])

这是对奇数元素的提取,其他条件同理,在这个问题上我们深入再学习一下,首先 numpy 中的 array 数组是可以直接对数组中的每个元素进行处理的。例如我们想对每个元素减一:

#input
 
>>> arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
 
#Solution
 
>>> arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> arr - 1
array([-1, 0, 1, 2, 3, 4, 5, 6, 7, 8])

从上面的例子我们可以看出来,对 arr 直接进行减一操作,结果是对每一个元素都进行了减一的操作,数组的维度不变,为了满足取出特定条件的元素这个操作,我们可以进行条件判断,例如判断每个元素是否为奇数:

#input
 
>>> arr = np.arange(10)
>>> arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
#solution
 
>>> arr % 2 == 1
array([False, True, False, True, False, True, False, True, False, True])

由此可见,条件判断后输出为和 arr 相同维度的数组,但是其中每个元素为布尔类型的值,取值为数组 arr 对每个元素分别进行条件判断的结果。

下面我们分析对 arr 数组进行特定取值,给其一个布尔类型的 arr 数组,并且维度与 arr 相同,以此得到取值的目的:

#input
 
>>> arr_bool = np.array([1, 1, 0, 0, 1, 1, 0, 0, 1, 1], dtype=bool)
>>> arr_bool
array([ True, True, False, False, True, True, False, False, True, True])
 
#solution
>>> arr[arr_bool]
array([0, 1, 4, 5, 8, 9])

从上述例子,我们构建了一个布尔类型的数组为 arr_bool ,并且维度与 arr 相同,进行直接嵌入实现了取值,以此完成了我们最终的目的,可以对任意满足条件的元素进行提取。并且理解了其中的原理。

PS:番外篇,如果维度不同可以吗?

#input
 
>>> arr_bool = np.ones(11, dtype=bool)
>>> arr_bool
array([ True, True, True, True, True, True, True, True, True, True, True])   #注意!!这里有11个 True 哦。
 
#solution
>>> arr[arr_bool]
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IndexError: boolean index did not match indexed array along dimension 0; dimension is 10 but corresponding boolean dimension is 11

由上可见,维度必须保持一致,从 arr 数组里才可以按照 bool 类型取出对应位置为 True 的元素。这个性质帮助我们可以更灵活的处理 numpy 数组。

PS2: 如何替换满足条件的元素为其它值呢?

>>> arr = np.arange(10)
>>> arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> arr[arr%2 == 1] = -1
>>> arr
array([ 0, -1, 2, -1, 4, -1, 6, -1, 8, -1])

以上这篇从numpy数组中取出满足条件的元素示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python利用elaphe制作二维条形码实现代码
May 25 Python
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
Feb 03 Python
新手常见6种的python报错及解决方法
Mar 09 Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 Python
django mysql数据库及图片上传接口详解
Jul 18 Python
详解Python用三种方式统计词频的方法
Jul 29 Python
python安装gdal的两种方法
Oct 29 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
浅谈pytorch torch.backends.cudnn设置作用
Feb 20 Python
关于PySnooper 永远不要使用print进行调试的问题
Mar 04 Python
python实现图片上添加图片
Nov 26 #Python
numpy:找到指定元素的索引示例
Nov 26 #Python
python中seaborn包常用图形使用详解
Nov 25 #Python
解决python中的幂函数、指数函数问题
Nov 25 #Python
妙用itchat! python实现久坐提醒功能
Nov 25 #Python
python pygame实现滚动横版射击游戏城市之战
Nov 25 #Python
python使用itchat模块给心爱的人每天发天气预报
Nov 25 #Python
You might like
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
一页面多XMLHttpRequest对象
2007/01/22 Javascript
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
JS修改css样式style浅谈
2013/05/06 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
BootstrapValidator不触发校验的实现代码
2016/09/28 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
python对指定目录下文件进行批量重命名的方法
2015/04/18 Python
详解python的ORM中Pony用法
2018/02/09 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
python利用datetime模块计算程序运行时间问题
2020/02/20 Python
区分python中的进程与线程
2020/08/13 Python
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
2016/03/22 HTML / CSS
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
2012/02/21 面试题
初婚未育证明
2014/01/15 职场文书
军训教官感言
2014/03/02 职场文书
党员教师工作决心书
2014/03/13 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
初中班主任教育随笔
2015/08/15 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript