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 相关文章推荐
简单的Python2.7编程初学经验总结
Apr 01 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
Apr 27 Python
详解python校验SQL脚本命名规则
Mar 22 Python
解决Django加载静态资源失败的问题
Jul 28 Python
python3 selenium自动化 下拉框定位的例子
Aug 23 Python
python列表生成器迭代器实例解析
Dec 19 Python
Python的形参和实参使用方式
Dec 24 Python
Pandas时间序列:重采样及频率转换方式
Dec 26 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
python实现将中文日期转换为数字日期
Jul 14 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
Feb 26 Python
使用Python解决图表与画布的间距问题
Apr 11 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实现的随机广告显示代码
2007/06/14 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
简单的自定义php模板引擎
2016/08/26 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
JavaScript的Cookies
2008/01/16 Javascript
JS 判断undefined的实现代码
2009/11/26 Javascript
Web开发之JavaScript
2012/03/29 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
JS验证字符串功能
2017/02/22 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
微信小程序实现animation动画
2018/01/26 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
Python利用递归实现文件的复制方法
2018/10/27 Python
python实现词法分析器
2019/01/31 Python
python实现趣味图片字符化
2019/04/30 Python
python调用摄像头拍摄数据集
2019/06/01 Python
浅谈python 类方法/静态方法
2020/09/18 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
香港家用健身器材、运动器材及健康美容仪器专门店:FitBoxx
2019/12/05 全球购物
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
授权委托书样本
2014/09/25 职场文书
2014年安全员工作总结
2014/11/13 职场文书
教研活动主持词
2015/07/03 职场文书