从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 不关闭控制台的实现方法
Oct 23 Python
Python中为什么要用self探讨
Apr 14 Python
Python文件及目录操作实例详解
Jun 04 Python
python GUI实例学习
Nov 21 Python
python3+PyQt5自定义视图详解
Apr 24 Python
python 计算一个字符串中所有数字的和实例
Jun 11 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
Jul 22 Python
python实现人像动漫化的示例代码
May 17 Python
python selenium xpath定位操作
Sep 01 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
Feb 25 Python
关于的python五子棋的算法
May 02 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脚本数据库功能详解(上)
2006/10/09 PHP
PHP Document 代码注释规范
2009/04/13 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
python怎么判断素数
2020/07/01 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
TCP/IP的分层模型
2013/10/27 面试题
2014年安全员工作总结
2014/11/13 职场文书
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记