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实现Const详解
Jan 27 Python
python中threading超线程用法实例分析
May 16 Python
Python实现以时间换空间的缓存替换算法
Feb 19 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
在python3.5中使用OpenCV的实例讲解
Apr 02 Python
numpy找出array中的最大值,最小值实例
Apr 03 Python
Python之时间和日期使用小结
Feb 14 Python
用Python实现BP神经网络(附代码)
Jul 10 Python
浅谈在JupyterNotebook下导入自己的模块的问题
Apr 16 Python
Python中pass的作用与使用教程
Nov 13 Python
Python常用断言函数实例汇总
Nov 30 Python
pycharm 复制代码出现空格的解决方式
Jan 15 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
改进的IP计数器
2006/10/09 PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
2013/04/26 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
js异或加解密效果代码
2008/06/25 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
合并table相同单元格的jquery插件分享(很精简)
2011/06/20 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
2015/09/16 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
jquery Banner轮播选项卡
2016/12/26 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
2019/09/03 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
详细分析React 表单与事件
2020/07/08 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
python读文件逐行处理的示例代码分享
2013/12/27 Python
Python编写电话薄实现增删改查功能
2016/05/07 Python
python实现excel读写数据
2021/03/02 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
Python何时应该使用Lambda函数
2019/07/02 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
Python内置异常类型全面汇总
2020/05/28 Python
pytorch判断是否cuda 判断变量类型方式
2020/06/23 Python
美国牛仔品牌:True Religion
2018/11/16 全球购物
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
合作意向书格式及范文
2014/03/31 职场文书
英文导游词
2015/02/13 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书