从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使用三角迭代计算圆周率PI的方法
Mar 20 Python
Python多进程并发(multiprocessing)用法实例详解
Jun 02 Python
Python实现的爬虫功能代码
Jun 24 Python
tensorflow获取变量维度信息
Mar 10 Python
python输入整条数据分割存入数组的方法
Nov 13 Python
python将类似json的数据存储到MySQL中的实例
Jul 12 Python
python中selenium操作下拉滚动条的几种方法汇总
Jul 14 Python
利用pyshp包给shapefile文件添加字段的实例
Dec 06 Python
python字符串下标与切片及使用方法
Feb 13 Python
Django 博客实现简单的全文搜索的示例代码
Feb 17 Python
Python 程序员必须掌握的日志记录
Aug 17 Python
在vscode中启动conda虚拟环境的思路详解
Dec 25 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
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
新手简单了解vue
2019/05/29 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
js实现带箭头的进度流程
2020/03/26 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
基于pandas数据样本行列选取的方法
2018/04/20 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
pyspark给dataframe增加新的一列的实现示例
2020/04/24 Python
Python二元算术运算常用方法解析
2020/09/15 Python
《莫泊桑拜师》教学反思
2014/04/23 职场文书
机关搬迁方案
2014/05/18 职场文书
爱我中华演讲稿
2014/05/20 职场文书
经济类毕业生求职信
2014/06/26 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
2014年电教工作总结
2014/12/19 职场文书
2015年团支部工作总结
2015/04/03 职场文书
小学教研工作总结2015
2015/05/13 职场文书
关于五一放假的通知
2015/08/18 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
Anaconda配置各版本Pytorch的实现
2021/08/07 Python