从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多层嵌套list的递归处理方法(推荐)
Jun 08 Python
python将视频转换为全字符视频
Apr 26 Python
用python生成与调用cntk模型代码演示方法
Aug 26 Python
Python高级特性之闭包与装饰器实例详解
Nov 19 Python
pyhton中__pycache__文件夹的产生与作用详解
Nov 24 Python
浅析Django中关于session的使用
Dec 30 Python
使用python turtle画高达
Jan 19 Python
python实现低通滤波器代码
Feb 26 Python
python基于socket函数实现端口扫描
May 28 Python
Python读取文件夹下的所有文件实例代码
Apr 02 Python
Python爬取某拍短视频
Jun 11 Python
python中subplot大小的设置步骤
Jun 28 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优化的8条经验
2008/03/24 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
2014/05/08 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
php输出图像的方法实例分析
2017/02/16 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
2015/11/19 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
简述JS控制台的使用
2018/07/15 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
在Python的Django框架中加载模版的方法
2015/07/16 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
详解python时间模块中的datetime模块
2016/01/13 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
化学相关工作求职信
2013/10/02 职场文书
优秀班集体先进事迹材料
2014/05/28 职场文书
授权委托书怎么写
2014/09/25 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
商务宴会祝酒词
2015/08/11 职场文书
初级职称评定工作总结
2015/08/13 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书
用JS实现飞机大战小游戏
2021/06/09 Javascript
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript