从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在图片中添加文字的两种方法
Apr 29 Python
Flask解决跨域的问题示例代码
Feb 12 Python
Python发送http请求解析返回json的实例
Mar 26 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
python 实现selenium断言和验证的方法
Feb 13 Python
python 利用turtle模块画出没有角的方格
Nov 23 Python
TensorFlow tensor的拼接实例
Jan 19 Python
Python新手学习raise用法
Jun 03 Python
python使用多线程查询数据库的实现示例
Aug 17 Python
Python 实现定积分与二重定积分的操作
May 26 Python
Python selenium绕过webdriver监测执行javascript
Apr 12 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验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
php设计模式之观察者模式的应用详解
2013/05/21 PHP
探讨PHP删除文件夹的三种方法
2013/06/09 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
php实现无限级分类
2014/12/24 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
转一个日期输入控件,支持FF
2007/04/27 Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
JS和JQ的event对象区别分析
2014/11/24 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
python实现按任意键继续执行程序
2016/12/30 Python
python进行文件对比的方法
2018/12/24 Python
OpenCV搞定腾讯滑块验证码的实现代码
2019/05/18 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
招商经理岗位职责
2013/11/16 职场文书
婚庆司仪主持词
2014/03/15 职场文书
房屋租赁协议书
2014/04/10 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
生日答谢词
2015/01/05 职场文书
社会实践活动报告
2015/02/05 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
TensorFlow的自动求导原理分析
2021/05/26 Python
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL