第一种方法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】获取数组中非零元素相关推荐

  1. python数据分析 获取数组中非零元素的索引

    [小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] python数据分析 获取数组中非零元素的索引 选择题 以下说法不正确的是? import ...

  2. 返回数组中非零元素的索引np.flatnonzero()

    [小白从小学Python.C.Java] [计算机等考+500强证书+考研] [Python-数据分析] 返回数组中非零元素的索引 np.flatnonzero() 选择题 以下程序的运行结果是? i ...

  3. python获取数组中最多的元素

    获取数组中数量最多的元素,也就是最频繁的那个元素,方法有很多,下面是3种最简单的: 1.用max函数 sample = [1,2,3,3,3,4,5,5] max(set(sample), key=s ...

  4. python获取数组中大于某一阈值的那些索引值_Python NumPy 高级索引——整数组索引、布尔索引及花式索引...

    NumPy 除了之前文章中介绍的用整数和切片的索引外,数组还可以由整数数组索引.布尔索引及花式索引. 整数数组索引 整数索引有助于基于 N 维索引来获取数组中任意元素.每个整数数组表示该维度的下标值. ...

  5. python获取数组长度_Python返回数组(List)长度的方法

    原博文 2016-03-16 11:53 − 其实很简单,用len函数: >>> array = [0,1,2,3,4,5]>>> print len(array) ...

  6. 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 ...

  7. python 矩阵元素查找位置函数_Python中二维数组中非零元素位置的快速查找方法...

    我提出这个问题的原因是我认为numpy.非零功能没有得到应有的优化.以下示例显示了这一事实:a=np.random.random((1000,1000)) a[a<0.5]=0 timeit.t ...

  8. python怎么获取向量中非零元素的行号

    假设A为向量  : A为行向量的时候,需要转化为列向量   A.T A为列向量的时候,不需要转化 了解下numpy 中的nonzero()函数 np.nonzero(array or mmatrix) ...

  9. python获取数组中大于某一阈值的那些索引值_使用Python+OpenCV进行实时车道检测...

    大约十年前,当谷歌还在试验一辆原型车的时候,我想到了自己的第一辆自动驾驶汽车,当时我立刻被这个想法迷住了.不可否认的是,我必须等待一段时间,直到这些概念向社区开放,现在看来等待确实是值得的!我最近试验 ...

最新文章

  1. linux添加ssl信任根证书,linux系统添加根证书linux证书信任列表
  2. 研究揭秘:神经网络越大、表现越好的“神秘力量”
  3. 企业架构 - 组织角色和技能
  4. c语言 while 教案,c语言电子教案(刘丹)
  5. js条件语句初步练习
  6. 阿里巴巴JAVA开发手册及开发插件
  7. 特征码弊端渐显 杀毒技术面临革命
  8. 解决Mybatis的配置文件标签属性自动提示
  9. 从数组创建ArrayList
  10. JS字符串转换为数字,Number(),parseInt()和parseFloat()的区别
  11. 通过导航栏切换页面动画
  12. 再谈WinRT自定义组件的开发
  13. js函数劫持与反劫持
  14. 《卓有成效的管理者》读书笔记
  15. python机器视觉培训——Python的安装
  16. DNS介绍,哪个好,速度快稳定
  17. 稀疏矩阵的三种存储方法
  18. linux查看当前账号权限,Linux账号权限管理
  19. 【复习必备】高中数学必修四公式汇总, 精华版赶快收藏
  20. Web防火墙(WAF)是什么?和传统防火墙区别是什么?

热门文章

  1. 如何搭建自己CDN服务器
  2. ABAP使用LOOP AT ASSIGNING FIELD SYMBOL直接更新内表数据
  3. MacOS安装brew安装git安装sdkman安装sbt
  4. 数字图像处理(1)——认识数字图像
  5. 数字图像处理:线性和非线性滤波的平滑空间滤波器(Smoothing Spatial Filters)
  6. TDA4VM PDK应用笔记
  7. echarts 世界地图 地图不渲染问题
  8. 天融信数通小百科:无线AP的Soul mate—POE交换机
  9. 《五月集训》第十四天——栈
  10. Queue接口分析:add和offer区别,remove和poll方法到底啥区别