从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 sys.path详细介绍
Oct 17 Python
跟老齐学Python之做一个小游戏
Sep 28 Python
采用Psyco实现python执行速度提高到与编译语言一样的水平
Oct 11 Python
对于Python中RawString的理解介绍
Jul 07 Python
老生常谈Python进阶之装饰器
May 11 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
Sep 20 Python
python获取外网IP并发邮件的实现方法
Oct 01 Python
python消除序列的重复值并保持顺序不变的实例
Nov 08 Python
Python3.7 新特性之dataclass装饰器
May 27 Python
Python导入数值型Excel数据并生成矩阵操作
Jun 09 Python
谈谈python垃圾回收机制
Sep 27 Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 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 IP及IP段进行访问限制的代码
2008/12/17 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
2019/03/12 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
js与jquery回车提交的方法
2015/02/03 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
微信小程序实现点赞、取消点赞功能
2018/11/02 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
原生JS无缝滑动轮播图
2019/10/22 Javascript
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
Django配置文件代码说明
2019/12/04 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
英国在线药房:Express Chemist
2019/03/28 全球购物
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
企业办公室岗位职责
2014/03/12 职场文书
2016天猫双十一广告语
2016/01/28 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS