从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 相关文章推荐
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
May 22 Python
Python中的模块导入和读取键盘输入的方法
Oct 16 Python
简介Python设计模式中的代理模式与模板方法模式编程
Feb 02 Python
python中Apriori算法实现讲解
Dec 10 Python
Python制作豆瓣图片的爬虫
Dec 28 Python
树莓派采用socket方式文件传输(python)
Jun 22 Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 Python
Python中使用filter过滤列表的一个小技巧分享
May 02 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
May 09 Python
详解pycharm2020.1.1专业版安装指南(推荐)
Aug 07 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
Mar 04 Python
详解Python如何批量采集京东商品数据流程
Jan 22 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实现的支持断点续传的文件下载类
2014/09/23 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
JS父页面与子页面相互传值方法
2014/03/05 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
nodejs URL模块操作URL相关方法介绍
2015/03/03 NodeJs
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
2018/04/20 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
Vue代码整洁之去重方法整理
2019/08/06 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
Python编程中的for循环语句学习教程
2015/10/14 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
python实现杨氏矩阵查找
2019/03/02 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
python获取当前文件路径以及父文件路径的方法
2019/07/10 Python
django 单表操作实例详解
2019/07/30 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
雷蛇美国官网:Razer
2020/04/03 全球购物
销售主管竞聘书
2014/03/31 职场文书
电子商务求职信
2014/06/15 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
二手房购房意向书
2015/05/09 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技