从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模拟登陆Tom邮箱示例分享
Jan 13 Python
python生成圆形图片的方法
Mar 25 Python
python编程使用selenium模拟登陆淘宝实例代码
Jan 25 Python
PyQt5每天必学之进度条效果
Apr 19 Python
Django教程笔记之中间件middleware详解
Aug 01 Python
Selenium定位元素操作示例
Aug 10 Python
详解Python3注释知识点
Feb 19 Python
Django的性能优化实现解析
Jul 30 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
python pptx复制指定页的ppt教程
Feb 14 Python
基于python实现破解滑动验证码过程解析
May 28 Python
Django怎么在admin后台注册数据库表
Nov 14 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
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
用js解决数字不能换行问题
2010/08/10 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
Vue动态组件与异步组件实例详解
2019/02/23 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
python 控制语句
2011/11/03 Python
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
使用pip安装python库的多种方式
2019/07/31 Python
使用python实现飞机大战游戏
2020/03/23 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
Python爬取微信小程序Charles实现过程图解
2020/09/29 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
python中spy++的使用超详细教程
2021/01/29 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
幼儿教师考核制度
2014/01/25 职场文书
企业指导教师评语
2014/04/28 职场文书
广播体操比赛口号
2014/06/10 职场文书
邀请书格式范文
2015/02/02 职场文书
机关工会工作总结2015
2015/05/26 职场文书
毕业实习单位意见
2015/06/04 职场文书
庆七一晚会主持词
2015/06/30 职场文书
运输公司工作总结
2015/08/11 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python