【Python】获取数组中非零元素
第一种方法flatnonzero
import numpy as npa = np.array([[1,2,3],[4,5,6]])
b = np.array([[True,True,False],[False,True,False]])
c = a*b
print(c.ravel()[np.flatnonzero(c)])out:
[1 2 5]
第二种方法nonzero
nonzero(a)
返回数组a中非零元素的索引值数组。
(1)只有a中非零元素才会有索引值,那些零值元素没有索引值;
(2)返回的索引值数组是一个2维tuple数组,该tuple数组中包含一维的array数组。其中,一维array向量的个数与a的维数是一致的。
(3)索引值数组的每一个array均是从一个维度上来描述其索引值。比如,如果a是一个二维数组,则索引值数组有两个array,第一个array从行维度来描述索引值;第二个array从列维度来描述索引值。
(4) 该np.transpose(np.nonzero(x))
函数能够描述出每一个非零元素在不同维度的索引值。
(5)通过a[nonzero(a)]得到所有a中的非零值
#a是1维数组
a = [0,2,3]
b = np.nonzero(a)
print(np.array(b).ndim)
print(b)结果:
2
(array([1, 2], dtype=int64),)
说明:索引1和索引2的位置上元素的值非零。
#a是2维数组
a = np.array([[0,0,3],[0,0,0],[0,0,9]])
b = np.nonzero(a)
print(np.array(b).ndim)
print(b)
print(np.transpose(np.nonzero(a)))结果:
2
(array([0, 2], dtype=int64), array([2, 2], dtype=int64))
[[0 2][2 2]]
说明:
(1)a中有2个非零元素,因此,索引值tuple中array的长度为2。因为,只有非零元素才有索引值。
(2)索引值数组是2 维的。实际上,无论a的维度是多少,索引值数组一定是2维的tuple,但是tuple中的一维array个数和a的维数一致。
(3)第1个array([0, 2])是从row值上对3和9进行的描述。第2个array([2, 2])是从col值上对3和9的描述。这样,从行和列上两个维度上各用一个数组来描述非零索引值。
(4)通过调用np.transpose()函数,得出3的索引值是[0 2],即第0行,第2列。
#a是3维数组a = np.array([[[0,0],[1,0]],[[0,0],[1,0]],[[0,0],[1,0]]])
b = np.nonzero(a)
print(np.array(b).ndim)
print(b)结果:2
(array([0, 1, 2], dtype=int64), array([1, 1, 1], dtype=int64), array([0, 0, 0], dtype=int64))说明:由于a是3维数组,因此,索引值数组有3个一维数组。
注:数组索引值从0开始。
【Python】获取数组中非零元素相关推荐
- python数据分析 获取数组中非零元素的索引
[小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] python数据分析 获取数组中非零元素的索引 选择题 以下说法不正确的是? import ...
- 返回数组中非零元素的索引np.flatnonzero()
[小白从小学Python.C.Java] [计算机等考+500强证书+考研] [Python-数据分析] 返回数组中非零元素的索引 np.flatnonzero() 选择题 以下程序的运行结果是? i ...
- python获取数组中最多的元素
获取数组中数量最多的元素,也就是最频繁的那个元素,方法有很多,下面是3种最简单的: 1.用max函数 sample = [1,2,3,3,3,4,5,5] max(set(sample), key=s ...
- python获取数组中大于某一阈值的那些索引值_Python NumPy 高级索引——整数组索引、布尔索引及花式索引...
NumPy 除了之前文章中介绍的用整数和切片的索引外,数组还可以由整数数组索引.布尔索引及花式索引. 整数数组索引 整数索引有助于基于 N 维索引来获取数组中任意元素.每个整数数组表示该维度的下标值. ...
- python获取数组长度_Python返回数组(List)长度的方法
原博文 2016-03-16 11:53 − 其实很简单,用len函数: >>> array = [0,1,2,3,4,5]>>> print len(array) ...
- python库numpy使用技巧(一)——提取数组中非零元素
使用库numpy Matlab中 通过逻辑矩阵可快速得到 a = [1,2,3,4,5,6]a =1 2 3 4 5 6b = logical([1,0,0,1,1,0])b =1 0 0 1 1 0 ...
- python 矩阵元素查找位置函数_Python中二维数组中非零元素位置的快速查找方法...
我提出这个问题的原因是我认为numpy.非零功能没有得到应有的优化.以下示例显示了这一事实:a=np.random.random((1000,1000)) a[a<0.5]=0 timeit.t ...
- python怎么获取向量中非零元素的行号
假设A为向量 : A为行向量的时候,需要转化为列向量 A.T A为列向量的时候,不需要转化 了解下numpy 中的nonzero()函数 np.nonzero(array or mmatrix) ...
- python获取数组中大于某一阈值的那些索引值_使用Python+OpenCV进行实时车道检测...
大约十年前,当谷歌还在试验一辆原型车的时候,我想到了自己的第一辆自动驾驶汽车,当时我立刻被这个想法迷住了.不可否认的是,我必须等待一段时间,直到这些概念向社区开放,现在看来等待确实是值得的!我最近试验 ...
最新文章
- linux添加ssl信任根证书,linux系统添加根证书linux证书信任列表
- 研究揭秘:神经网络越大、表现越好的“神秘力量”
- 企业架构 - 组织角色和技能
- c语言 while 教案,c语言电子教案(刘丹)
- js条件语句初步练习
- 阿里巴巴JAVA开发手册及开发插件
- 特征码弊端渐显 杀毒技术面临革命
- 解决Mybatis的配置文件标签属性自动提示
- 从数组创建ArrayList
- JS字符串转换为数字,Number(),parseInt()和parseFloat()的区别
- 通过导航栏切换页面动画
- 再谈WinRT自定义组件的开发
- js函数劫持与反劫持
- 《卓有成效的管理者》读书笔记
- python机器视觉培训——Python的安装
- DNS介绍,哪个好,速度快稳定
- 稀疏矩阵的三种存储方法
- linux查看当前账号权限,Linux账号权限管理
- 【复习必备】高中数学必修四公式汇总, 精华版赶快收藏
- Web防火墙(WAF)是什么?和传统防火墙区别是什么?