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编程中三条常用的技巧
May 11 Python
python3批量删除豆瓣分组下的好友的实现代码
Jun 07 Python
Python实现视频下载功能
Mar 14 Python
Python实现的圆形绘制(画圆)示例
Jan 31 Python
Python unittest模块用法实例分析
May 25 Python
用python写扫雷游戏实例代码分享
May 27 Python
Python GUI布局尺寸适配方法
Oct 11 Python
对python 匹配字符串开头和结尾的方法详解
Oct 27 Python
python模块导入的细节详解
Dec 10 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
pytorch实现从本地加载 .pth 格式模型
Feb 14 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 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
How do I change MySQL timezone?
2008/03/26 PHP
探讨php中header的用法详解
2013/06/07 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
thinkphp的dump函数无输出实例代码
2016/11/15 PHP
JavaScript 继承详解 第一篇
2009/08/30 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
jquery仿百度经验滑动切换浏览效果
2015/04/14 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
微信小程序解析富文本过程详解
2019/07/13 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
Python 对象中的数据类型
2017/05/13 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
python实现批量命名照片
2020/06/18 Python
一款纯css3实现简单的checkbox复选框和radio单选框
2014/11/05 HTML / CSS
Haggar官网:美国男装品牌
2020/02/16 全球购物
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
静态成员和非静态成员的区别
2012/05/12 面试题
努力学习演讲稿
2014/05/10 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
师德师风整改措施
2014/10/24 职场文书
财务总监岗位职责
2015/02/03 职场文书
党支部季度考核意见
2015/06/02 职场文书
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python
oracle重置序列从0开始递增1
2022/02/28 Oracle
PHP 时间处理类Carbon
2022/05/20 PHP