举三个例子,就能清楚的看到 np.nonzero() 这个函数返回值的意义


一、

#例1 一维数组
import numpy as np a = [0,1,2,0,3,0]
b = np.nonzero(a)
print(b)
输出: (array([1, 2, 4], dtype=int64),)

nonzero()用于得到数组中非零元素的位置(数组索引),如上例中数组a中索引1,2,4中的元素不为0,即返回值


二、

#例2 二维数组
import numpy as np
a =[[1,2,3],
[0,2,0],
[0,2,2]] b = nonzero(a)
print(b)
输出:(array([0, 0, 0, 1, 2, 2], dtype=int64), array([0, 1, 2, 1, 1, 2], dtype=int64))

  先看一下输出的内容(格式),它输出了二个array数组,刚好对应了二维数组的二,每一个数组对应了数组a的一个维度,也是说在每个数组中挑出对应的数字组成一个坐标,就可以找到数组a中非0元素。比如说从 输出的第一个数组 [0, 0, 0, 1, 2, 2]中选第一个数字0和第二个数组 [0, 1, 2, 1, 1, 2] 也选出对应的数字0,就组成了一个位置坐标[0,0](也即 [0][0] ),意味着数组a中第0行,第0列的位置是非0元素,其余类推。两个数组分别选出一个数字就对应了6个位置,即 [0][0] ,[0][1],[0][2],[1][1],[2][1],[2][2],这些就是数组a中的非0位置对应的索引信息,可以通过如a[0][0], a[0][1]等取出。

  哎,现在是不是发现了,a中元素非0元素的个数和输出的每一个数组的长度是一样的。如果现在懂了一点,猜测一下nonzero()三维和高维数组的输出结果。


三、

# 例三 三维数组
import numpy as np
a =[[[1,2,3],
[1,0,1]],
[[0,2,0],
[1,1,0]],
[[0,2,2],
[0,9,8]]] b = nonzero(a)
print(b)
输出: (array([0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1], dtype=int64), array([0, 1, 2, 0, 2, 1, 0, 1, 1, 2, 1, 2], dtype=int64))

在输出的三个array数组中分别选出对应的位置组成a中非0位置的索引,即 [ 0 ][ 0 ][ 0 ],[ 0 ][ 0 ][ 1 ],[ 0 ][ 0 ][ 2 ],[ 0 ][ 1 ][ 0 ]等。

 

理解np.nonzero()函数的更多相关文章

  1. np.nonzero()函数用法

    返回数组中不为0的元素的下标. 数组中元素可为布尔.整型和浮点型,返回值为元祖 一.一维数组 1.数组元素为布尔类型 a=np.array([True,False,True,False]) b=np. ...

  2. Python中Numpy.nonzero()函数

    Numpy.nonzero()返回的是数组中,非零元素的位置.如果是二维数组就是描述非零元素在几行几列,三维数组则是描述非零元素在第几组中的第几行第几列. 举例如下: 二维数组: a = np.arr ...

  3. 如何理解javaSript中函数的参数是按值传递

    本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人 ...

  4. 【转】Python numpy库的nonzero函数用法

    当使用布尔数组直接作为下标对象或者元组下标对象中有布尔数组时,都相当于用nonzero()将布尔数组转换成一组整数数组,然后使用整数数组进行下标运算. nonzeros(a) 返回数组a中值不为零的元 ...

  5. 理解php Hash函数,增强密码安全

    1.声明 密码学是一个复杂的话题,我也不是这方面的专家.许多高校和研究机构在这方面都有长期的研究.在这篇文章里,我希望尽量使用简单易懂的方式向你展示一种安全存储Web程序密码的方法. 2.“Hash” ...

  6. 理解javascript 回调函数

    ##回调函数定义 百度百科:回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不 ...

  7. 深入理解立即执行函数(function(){})();

    ( function(){-} )()和( function (){-} () )是两种javascript立即执行函数的常见写法,要理解立即执行函数,需要先理解一些函数的基本概念. 1,函数声明,函 ...

  8. 深入浅出理解c++虚函数

    深入浅出理解c++虚函数   记得几个月前看过C++虚函数的问题,当时其实就看懂了,最近笔试中遇到了虚函数竟然不太确定,所以还是理解的不深刻,所以想通过这篇文章来巩固下. 装逼一刻: 最近,本人思想发 ...

  9. np.argsort函数

    np.argsort函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me numpy.argsort(a, axis=-1, kind='quicksort', order=None) 功能: ...

随机推荐

  1. Java读源码之Object

    前言 JDK版本: 1.8 最近想看看jdk源码提高下技术深度(比较闲),万物皆对象,虽然Object大多native方法但还是很重要的. 源码 package java.lang; /** * Ja ...

  2. web安全之php中常见的INI文件配置

    php.ini 在 PHP 启动时被读取.对于服务器模块版本的 PHP,仅在 web 服务器启动时读取 一次.对于 CGI 和 CLI 版本,每次调用都会读取. * Apache web 服务器在启动 ...

  3. call,apply和bind详解

    一.call和apply call和apply其实是同一个东西,区别只有参数不同,call是apply的语法糖,所以就放在一起说了,这两个方法都是定义在函数对象的原型上的(Function.proto ...

  4. MFC::Visual studio ? 对应VC6-14

    VC6VC7: Visual studio.netVC7.1: Visual studio 2003VC8: Visual studio 2005VC9: Visual studio 2008VC10 ...

  5. vue MD5 加密

    确保vue项目中有MD5的依赖,当然没有的可以安装crypto模块. npm安装: npm install --save crypto 在main.js文件中将md5引入,可以全局使用的 import ...

  6. 第三方应用 flashfxp,filezilla提权

    filezilla 提权 filezilla 开源的ftp服务器 默认监听14147端口 默认安装目录下有个敏感文件 filezillaserver.xml(包含用户信息) filezillaserv ...

  7. docker3-镜像的使用

    基本使用命令: [root@ipha-dev71- docker]# docker search python # 搜索镜像 [root@ipha-dev71- docker]# docker pul ...

  8. 手动部署 Docker+Grafana+Prometheus系统监控之Redis

    监控规划图 使用Docker 创建两台Redis docker run -d --name redis1 redis docker run -d --name redis2 redis 查看redis ...

  9. 三维动画形变算法(Mixed Finite Elements)

    混合有限元方法通入引入辅助变量后可以将高阶微分问题变成一系列低阶微分问题的组合.在三维网格形变问题中,我们考虑如下泛函极值问题: 其中u: Ω0 → R3是变形体的空间坐标,上述泛函极值问题对应的欧拉 ...

  10. [NOIP2013提高组]华容道

    这道题第一眼看是暴力,然后发现直接暴力会TLE. 把问题转换一下:移动空格到处跑,如果空格跑到指定位置的棋子,交换位置. 这个可以设计一个状态:$[x1][y1][x2][y2]$,表示空格在$(x1 ...