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中操作文件之read()方法的使用教程
May 24 Python
Python实现豆瓣图片下载的方法
May 25 Python
Python中操作符重载用法分析
Apr 29 Python
Python数据可视化正态分布简单分析及实现代码
Dec 04 Python
Python使用SQLite和Excel操作进行数据分析
Jan 20 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
python 格式化输出百分号的方法
Jan 20 Python
python实现简单坦克大战
Mar 27 Python
python实现梯度下降算法的实例详解
Aug 17 Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 Python
使用numpy实现矩阵的翻转(flip)与旋转
Jun 03 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维护文件系统
2006/10/09 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
php中simplexml_load_file函数用法实例
2014/11/12 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
2019/10/15 PHP
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
2006/11/07 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
2015/05/25 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
jQuery仿写百度百科的目录树
2017/01/03 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
jQuery实现移动端扭蛋机抽奖
2020/11/08 jQuery
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
搞笑创意广告语
2014/03/17 职场文书
大学专科自荐信
2014/06/17 职场文书
工作粗心大意检讨书
2014/09/18 职场文书
2014年城管工作总结
2014/11/20 职场文书
优秀校长事迹材料
2014/12/24 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
golang特有程序结构入门教程
2021/06/02 Python
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python