从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根据区号生成手机号码的方法
Jul 08 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 Python
Django实现组合搜索的方法示例
Jan 23 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
Feb 18 Python
Python常用的json标准库
Feb 19 Python
基于OpenCV python3实现证件照换背景的方法
Mar 22 Python
Python提取特定时间段内数据的方法实例
Apr 01 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
May 13 Python
Python搭建Keras CNN模型破解网站验证码的实现
Apr 07 Python
django的autoreload机制实现
Jun 03 Python
如何获取numpy array前N个最大值
May 14 Python
Pygame Time时间控制的具体使用详解
Nov 17 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
第十四节 命名空间 [14]
2006/10/09 PHP
php获取域名的google收录示例
2014/03/24 PHP
JS 文件传参及处理技巧分析
2010/05/13 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
Jquery实现自定义tooltip示例代码
2014/02/12 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
老生常谈js数据类型
2017/08/03 Javascript
vue组件学习教程
2017/09/09 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
微信小程序图片加载失败时替换为默认图片的方法
2019/12/09 Javascript
Python对列表排序的方法实例分析
2015/05/16 Python
使用python为mysql实现restful接口
2018/01/05 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
Python3爬虫学习入门教程
2018/12/11 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
简单了解django orm中介模型
2019/07/30 Python
python解析yaml文件过程详解
2019/08/30 Python
python实现的汉诺塔算法示例
2019/10/23 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
你的自行车健身专家:FaFit24
2016/11/16 全球购物
Cocopanda波兰:购买化妆品、护肤品、护发和香水
2020/05/25 全球购物
表彰先进的通报
2014/01/31 职场文书
关于感恩的演讲稿800字
2014/08/26 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
飞越疯人院观后感
2015/06/09 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python