Numpy.nonzero()返回的是数组中,非零元素的位置。如果是二维数组就是描述非零元素在几行几列,三维数组则是描述非零元素在第几组中的第几行第几列。

举例如下:

二维数组:

a = np.array([[, , ], [, , ], [, , ]])
b = np.nonzero(a)
print(b)

结果为:(array([0, 0, 1, 2], dtype=int64), array([0, 2, 1, 2], dtype=int64))

第一个array描述行,第二个array描述列,我们把结果转变下以便理解:

array[0, 0, 1, 2]

array[0, 2, 1, 2]

我们看到第一个非零元素1,在0行0列,对应为加粗数字:

array[0, 0, 1, 2]

array[0, 2, 1, 2]

第二个非零元是3,在0行2列,对应:

array[0, 0, 1, 2]

array[0, 2, 1, 2]

第三个非零元素是2,在1行1列,对应:

array[0, 0, 1, 2]

array[0, 2, 1, 2]

第四个非零元素是9,在2行2列,对应:

array[0, 0, 1, 2]

array[0, 2, 1, 2]

再举一个三维数组的列子:

a = np.array([[[,],[,]],[[,],[,]],[[,],[,]]])
b = np.nonzero(a)
print(b)

结果为:(array([0, 0, 1, 1, 2], dtype=int64), array([0, 1, 0, 1, 1], dtype=int64), array([1, 0, 1, 0, 0], dtype=int64))

同样变形下:

array[0, 0, 1, 1, 2]     描述在第几组

array[0, 1, 0, 1, 1]     描述行

array[1, 0, 1, 0, 0]     描述列

第一个非零元是1,在0组0行1列,对应

array[0, 0, 1, 1, 2]

array[0, 1, 0, 1, 1]

array[1, 0, 1, 0, 0]

第二个非零元是2,在0组1行0列,对应

array[0, 0, 1, 1, 2]

array[0, 1, 0, 1, 1]

array[1, 0, 1, 0, 0]

第三个非零元是3,在1组0行1列,对应

array[0, 0, 1, 1, 2]

array[0, 1, 0, 1, 1]

array[1, 0, 1, 0, 0]

第四个非零元是4,在1组1行0列,对应

array[0, 0, 1, 1, 2]

array[0, 1, 0, 1, 1]

array[1, 0, 1, 0, 0]

第五个非零元素是5,在2组1行0列,对应

array[0, 0, 1, 1, 2]

array[0, 1, 0, 1, 1]

array[1, 0, 1, 0, 0]

更高维数计算类似,读者可以自己推导

Python中Numpy.nonzero()函数的更多相关文章

  1. Python中numpy.apply_along_axis()函数的用法

    numpy.apply_along_axis(func, axis, arr, *args, **kwargs): 必选参数:func,axis,arr.其中func是我们自定义的一个函数,函数fun ...

  2. python 中numpy dot函数的使用方法

    这个函数在的数字信号处理中用处还是比较广泛的,函数的具体定义如下所示: numpy.dot(a, b, out=None) 该函数的作用是获取两个元素a,b的乘积,表示的含义如下所示: dot(a, ...

  3. python中numpy.sum()函数

    讲解清晰,转载自:https://blog.csdn.net/rifengxxc/article/details/75008427 众所周知,sum不传参的时候,是所有元素的总和.这里就不说了. 1 ...

  4. python中numpy对函数进行矢量化转换

    在对numpy的数组进行操作时,我们应该尽量避免循环操作,尽可能利用矢量化函数来避免循环. 但是,直接将自定义函数应用在numpy数组之上会报错,我们需要将函数进行矢量化转换. def Theta(x ...

  5. python中numpy.concatenate()函数的使用

    numpy库数组拼接np.concatenate 原文:https://blog.csdn.net/zyl1042635242/article/details/43162031 思路:numpy提供了 ...

  6. Python中Numpy及Matplotlib使用

    Python中Numpy及Matplotlib使用 1. Jupyter Notebooks 作为小白,我现在使用的python编辑器是Jupyter Notebook,非常的好用,推荐!!! 你可以 ...

  7. python --- Python中的callable 函数

    python --- Python中的callable 函数 转自: http://archive.cnblogs.com/a/1798319/ Python中的callable 函数 callabl ...

  8. python中使用zip函数出现<zip object at 0x02A9E418>

    在Python中使用zip函数,出现<zip object at 0x02A9E418>错误的原因是,你是用的是python2点多的版本,python3.0对python做了改动 zip方 ...

  9. [转载]python中multiprocessing.pool函数介绍

    原文地址:http://blog.sina.com.cn/s/blog_5fa432b40101kwpi.html 作者:龙峰 摘自:http://hi.baidu.com/xjtukanif/blo ...

随机推荐

  1. node安装升级过程中遇到的问题汇总

    一.Node already installed, it's just not linked 第一步:sudo chown -R $(whoami) $(brew --prefix)/* 第二步:br ...

  2. 复制到粘贴板 && 提示

    copyText(String); TipLayer.showTip(String,timeOut);

  3. python selenium设计模式POM

    POM模式是什么 页面对象模型(POM)是一种设计模式,用来管理维护一组web元素集的对象库 在POM模式下,应用程序的每一个页面都有一个对的page class 每一个page class维护着该w ...

  4. Axure 8.1.0.3377 激活码 授权码 (亲测有效)

    适用版本 Axure 8.1.0.3377 zdfans.com gP5uuK2gH+iIVO3YFZwoKyxAdHpXRGNnZWN8Obntqv7++FF3pAz7dTu8B61ySxli 亲测 ...

  5. 环境配置 | Pycharm远程开发的环境配置

    目的:同局域网中的两台电脑,Mac上看视频学习编程 + 当服务器跑代码:Windows上使用Pycharm写代码.学习远程开发 (当前底子有限,很多操作可能存在理解偏差) Mac上代码存放路径:~/O ...

  6. PHP随机生成名字 电话号码

    封装函数 随机生成电话号码 function generate_name($count,$type="array",$white_space=false) {$arr = arra ...

  7. 寒假安卓app开发学习记录(6)

    今天把之前学过的内容复习了一遍,然后用了大概一个小时的时间看了看教学视频. 学到的主要内容是如何调试Android程序,以及Android的应用以及打包过程.   调试: 依次点击Run“-”Atta ...

  8. 素问 - REITs

    摘自<小韭的学习圈> Q 一直以来对REITs感兴趣,看过您微信公众号对REITs的分析,年化8-10%,长期收益稳定,且与其他投资品种关键性低,是很不错的分散配置选择. 您推荐的广发美国 ...

  9. 【游戏体验】Haunted House(鬼屋历险记)

    >>>点此处可试玩无敌版<<< 这款游戏可谓是经典,很多人的童年都有过它的陪伴,不妨重拾当年的快乐 个人测评 游戏性 9/10 音乐 7/10 剧情 4/10 总评 ...

  10. python面向对象封装案例2

    封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类 ...