从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实现巡检系统(solaris)示例
Apr 02 Python
Python3通过Luhn算法快速验证信用卡卡号的方法
May 14 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
Python实现的桶排序算法示例
Nov 29 Python
Python之web模板应用
Dec 26 Python
详解Django之admin组件的使用和源码剖析
May 04 Python
python3使用腾讯企业邮箱发送邮件的实例
Jun 28 Python
Python3视频转字符动画的实例代码
Aug 29 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
Jun 04 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 Python
如何利用Python实现一个论文降重工具
Jul 09 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 数组入门教程小结
2009/05/20 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
Json解析的方法小结
2016/06/22 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
js禁止浏览器的回退事件
2017/04/20 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
解决antd Form 表单校验方法无响应的问题
2020/10/27 Javascript
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
python安装cx_Oracle模块常见问题与解决方法
2017/02/21 Python
pymysql的简单封装代码实例
2020/01/08 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
python中id函数运行方式
2020/07/03 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
python递归函数用法详解
2020/10/26 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
会计岗位职责
2013/11/08 职场文书
个人工作表现评语
2014/04/30 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
离职感谢信
2015/01/21 职场文书
2015年人民调解工作总结
2015/05/18 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书