numpy ndarray 按条件筛选数组,关联筛选的例子


Posted in Python onNovember 26, 2019

最近的项目中大量涉及数据的预处理工作,对于ndarray的使用非常频繁。其中ndarray如何进行数值筛选,总结了几种方法。

1.按某些固定值筛选

如下面这段代码从,ndarray中可以筛选出数值等于3的子数组和其在原数组中的索引位置。

import numpy as np

arr = np.array([1, 1, 1, 134, 45, 3, 46, 45, 65, 3, 23424, 234, 12, 12, 3, 546, 1, 2])
print(np.where(arr==3))
print(arr[np.where(arr == 3)])

Output:

(array([ 5, 9, 14], dtype=int32),)
[3 3 3]

2.按多个固定值筛选

按上述方法筛选多个固定值也是可行的,将不同条件用括号括起来,之间打 | 即可。

import numpy as np

arr = np.array([1, 1, 1, 134, 45, 3, 46, 45, 65, 3, 23424, 234, 12, 12, 3, 546, 1, 2])
print(np.where((arr == 3) | (arr == 1)))
print(arr[np.where((arr == 3) | (arr == 1))])

Output:

(array([ 0, 1, 2, 5, 9, 14, 16], dtype=int32),)
[1 1 1 3 3 3 1]

3.按范围筛选

除了按固定值,我们还可以按一定的范围进行筛选

import numpy as np

arr = np.array([1, 1, 1, 134, 45, 3, 46, 45, 65, 3, 23424, 234, 12, 12, 3, 546, 1, 2])
print(np.where(arr > 3))
print(arr[np.where(arr > 3)])

Output:

(array([ 3, 4, 6, 7, 8, 10, 11, 12, 13, 15], dtype=int32),)
[ 134  45  46  45  65 23424  234  12  12  546]

如果不需要index,还可以有更快的方法

import numpy as np

arr = np.array([1, 1, 1, 134, 45, 3, 46, 45, 65, 3, 23424, 234, 12, 12, 3, 546, 1, 2])
print(arr[arr > 3])

Output:

[ 134  45  46  45  65 23424  234  12  12  546]

那为什么还需要用np.where呢?因为索引可以满足不同数组间的筛选,比如有a, b 两个数组我们需要筛选出所有a == 0的b时即可使用np.where函数。

import numpy as np

a = np.array([0, 0, 1, 1, 0, 1, 1, 0, 1])
b = np.arange(len(a))
print(a)
print(b)
print(b[np.where(a == 0)])

Output:

[0 0 1 1 0 1 1 0 1]
[0 1 2 3 4 5 6 7 8]
[0 1 4 7]

以上这篇numpy ndarray 按条件筛选数组,关联筛选的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python和shell实现的校验IP地址合法性脚本分享
Oct 23 Python
Python 自动补全(vim)
Nov 30 Python
Python、Javascript中的闭包比较
Feb 04 Python
Python记录详细调用堆栈日志的方法
May 05 Python
python判断给定的字符串是否是有效日期的方法
May 13 Python
详解Python中的条件判断语句
May 14 Python
详解python的argpare和click模块小结
Mar 31 Python
Python OpenCV中的resize()函数的使用
Jun 20 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
Python实现把多维数组展开成DataFrame
Nov 30 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
python如何利用traceback获取详细的异常信息
Jun 05 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 #Python
Python如何使用BeautifulSoup爬取网页信息
Nov 26 #Python
python实现在多维数组中挑选符合条件的全部元素
Nov 26 #Python
Python实现图片添加文字
Nov 26 #Python
从numpy数组中取出满足条件的元素示例
Nov 26 #Python
python实现图片上添加图片
Nov 26 #Python
numpy:找到指定元素的索引示例
Nov 26 #Python
You might like
php 生成WML页面方法详解
2009/08/09 PHP
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
Vue是怎么渲染template内的标签内容的
2020/06/05 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
Python中max函数用于二维列表的实例
2018/04/03 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
Yahoo-PHP面试题1
2016/07/20 面试题
大学专科生推荐信范文
2013/11/23 职场文书
代理人委托书
2014/09/16 职场文书
党员批评与自我批评发言
2014/10/02 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
党员倡议书
2015/01/19 职场文书
在职证明书模板
2015/06/15 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
python实现Nao机器人的单目测距
2021/09/04 Python
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫