理解np.nonzero()函数
举三个例子,就能清楚的看到 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()函数的更多相关文章
- np.nonzero()函数用法
返回数组中不为0的元素的下标. 数组中元素可为布尔.整型和浮点型,返回值为元祖 一.一维数组 1.数组元素为布尔类型 a=np.array([True,False,True,False]) b=np. ...
- Python中Numpy.nonzero()函数
Numpy.nonzero()返回的是数组中,非零元素的位置.如果是二维数组就是描述非零元素在几行几列,三维数组则是描述非零元素在第几组中的第几行第几列. 举例如下: 二维数组: a = np.arr ...
- 如何理解javaSript中函数的参数是按值传递
本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人 ...
- 【转】Python numpy库的nonzero函数用法
当使用布尔数组直接作为下标对象或者元组下标对象中有布尔数组时,都相当于用nonzero()将布尔数组转换成一组整数数组,然后使用整数数组进行下标运算. nonzeros(a) 返回数组a中值不为零的元 ...
- 理解php Hash函数,增强密码安全
1.声明 密码学是一个复杂的话题,我也不是这方面的专家.许多高校和研究机构在这方面都有长期的研究.在这篇文章里,我希望尽量使用简单易懂的方式向你展示一种安全存储Web程序密码的方法. 2.“Hash” ...
- 理解javascript 回调函数
##回调函数定义 百度百科:回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不 ...
- 深入理解立即执行函数(function(){})();
( function(){-} )()和( function (){-} () )是两种javascript立即执行函数的常见写法,要理解立即执行函数,需要先理解一些函数的基本概念. 1,函数声明,函 ...
- 深入浅出理解c++虚函数
深入浅出理解c++虚函数 记得几个月前看过C++虚函数的问题,当时其实就看懂了,最近笔试中遇到了虚函数竟然不太确定,所以还是理解的不深刻,所以想通过这篇文章来巩固下. 装逼一刻: 最近,本人思想发 ...
- np.argsort函数
np.argsort函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me numpy.argsort(a, axis=-1, kind='quicksort', order=None) 功能: ...
随机推荐
- 无意间做了个 web 版的 JVM 监控端(前后端分离 React+Spring Boot)
之前写了JConsole.VisualVM 依赖的 JMX 技术,然后放出了一个用纯 JMX 实现的 web 版本的 JConsole 的截图,今天源码来了. 本来就是为了更多的了解 JMX,第一步就 ...
- C语言-查找一个元素在数组中的位置
#include<stdio.h> #include <stdlib.h> #include <time.h> int search(int key, int a[ ...
- redis系列之------数据库
前言 当我们在Redis数据库中set一个KV的时候,这个KV保存在哪里?如果我们get的时候,又从哪里get出来.时间复杂度,空间复杂的等等,怎么优化等等一系列问题. 服务器中的数据库 Redis服 ...
- Centos 7.2天兔(Lepus 3.8)数据库监控系统部署
天兔(Lepus 3.8)数据库监控系统部署 转载自:https://blog.csdn.net/m0_38039437/article/details/79613260 一.安装LAMP基础环境 首 ...
- VirtualBox for Mac 6.0.14 开源免费虚拟机方案
VirtualBox for mac是一款开源虚拟机软件,你可以利用该软件在Mac OS平台上运行Windows软件,即可以在一定程度上弥补Mac OS平台软件不足的劣势,玩家也可以获得Windows ...
- Api版本管理
关于SpringMVC中如何添加,这一篇说的很详细了. http://www.cnblogs.com/jcli/p/springmvc_restful_version.html 版本管理可以通过路径进 ...
- MOOC python笔记(三) 序列容器:字符串、列表、元组
容器概念 容器是Python中的重要概念,分为有序与无序. 有序容器也称为序列类型容器,如:字符串.列表. 通用序列容器操作 容器连接+ 加号可以把两个序列连接成一个更大的容器,相加后两个序列的值并不 ...
- python- = 与 ==的区别
一个等号代表的含义是赋值,将某一数值赋给某个变量,比如a=3,将3这个数值赋予给a. 两个等号是判断是否相等,返回True或False,比如1==1.他们是相等的,那么就返回true.1==2,他们是 ...
- 19.Linux进程管理概述
1.进程基本概述 当我们运行一个程序,那么我们将运行的程序叫进程. PS1: 当程序运行为进程后,系统会为该进程分配内存,以及进程运行的身份和权限. PS2: 在进程运行的过程中,服务器上会有各种状态 ...
- JavaScript Array返回值以及是否改变原数组。
1. push:最后一位新增://改变原数组 arr.push("123"); 返回值是数组的长度: var b = ...