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的Bottle框架中使用微信API的示例
Apr 23 Python
Python基于动态规划算法计算单词距离
Jul 25 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
用python实现的线程池实例代码
Jan 06 Python
python 字典中取值的两种方法小结
Aug 02 Python
Scrapy使用的基本流程与实例讲解
Oct 21 Python
实例讲解Python脚本成为Windows中运行的exe文件
Jan 24 Python
通过shell+python实现企业微信预警
Mar 07 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
Jun 04 Python
Djang的model创建的字段和参数详解
Jul 27 Python
pandas进行数据输入和输出的方法详解
Mar 23 Python
Python 统计序列中元素的出现频度
Apr 26 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取得一个类的属性和方法的实现代码
2011/05/22 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
PHP实现今天是星期几的几种写法
2013/09/26 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
php实现的递归提成方案实例
2015/11/14 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
php结合mysql与mysqli扩展处理事务的方法
2016/06/29 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
js常用代码段整理
2011/11/30 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
vue 使用lodash实现对象数组深拷贝操作
2020/09/10 Javascript
Python对list列表结构中的值进行去重的方法总结
2016/05/07 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
python中实现k-means聚类算法详解
2017/11/11 Python
Tesserocr库的正确安装方式
2018/10/19 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
自动化专业本科毕业生求职信
2013/10/20 职场文书
护理专业自我鉴定
2014/01/30 职场文书
八项规定整改方案
2014/02/21 职场文书
2014年学校国庆主题活动方案
2014/09/16 职场文书
创业计划书之服装
2019/10/07 职场文书
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS