一文详解numpy中np.nonzero()函数

2023-05-16

np.nonzero函数是numpy中用于得到数组array中非零元素的位置(数组索引)的函数。一般来说,通过help(np.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值上对39进行的描述
。第2个array([2, 2])是从col值上对39的描述。这样,从行和列上两个维度上各用一个数组来描述非零索引值。
(4)通过调用np.transpose()函数,得出3的索引值是[0 2]
,即第0行,第2列。


#a是3维数组
a = np.array([[[0,1],[1,0]],[[0,1],[1,0]],[[0,0],[1,0]]])
b = np.nonzero(a)
print(np.array(b).ndim)
print(b)
结果:
2
(array([0, 0, 1, 1, 2], dtype=int64), array([0, 1, 0, 1, 1], dtype=int64), array([1, 0, 1, 0, 0], dtype=int64))
说明:由于a是3维数组,因此,索引值数组有3个一维数组。
print(a)
[[[0 1]
  [1 0]]

 [[0 1]
  [1 0]]

 [[0 0]
  [1 0]]]
  a的数组结构如上所示,请将a想像为数量为3的一组小图片,每张图片的大小为2*2,下文中以num * row * col来分别表示其维度。
  b包含3个长度为5的array,这意味着a有3维,且a共有5个非0值。
  先说b中的第1个向量是[0, 0, 1, 1, 2],这实际是a在num维度上描述的非零值。第0张图上有2个非零值,第1张图上有2个非零值,第2张图上有1个非零值。因此在num维度上的非零值数组为[0, 0, 1, 1, 2]。
  b中的第2个向量是[0, 1, 0, 1, 1],这实际是a在row维度上描述的非零值。由于row上的值只有01(只2行),所以只由01组成。
  b中的第3个向量,聪明的读者可能已经明白,不再赘述。

注:数组索引值从0开始。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一文详解numpy中np.nonzero()函数 的相关文章

随机推荐

  • 添加控制文件(add control file)

    1 一致性关闭数据库 shutdown immediate 2 通过 spfile 创建 pfile create pfile from spfile 3 修改 pfile xff0c 增加一个控制文件 vi pfile 4 在操作系统上通
  • Linux CentOS 7 最详细的zimbra开源邮件服务器安装搭建

    1 环境 网络 xff1a 飞塔防火墙用于端口映射 系统 xff1a Centos7 ip地址 xff1a 10 10 104 130 xff08 这里用的是本地服务器 xff09 域名 xff1a mail zimbra com span
  • CentOS安装MySQL8详细步骤

    Centos安装Mysql8详细步骤 环境 xff1a CentOS7 43 Centos8 rpm包安装 一 下载mysql rpm bundle包 复制下载连接下载 span class token function wget span
  • js清除浏览器缓存的几种方法

    一 CSS和JS为什么带参数 xff08 形如 css t 61 与 js t 61 xff09 怎样获取代码 css和js带参数 xff08 形如 css t 61 与 js t 61 xff09 使用参数有两种可能 xff1a 第一 脚
  • ubuntu14.04安装python scipy

    参考文章ubuntu下安装python scipy 安装出现的问题和文章中一模一样 xff0c 并且按文章中的解决办法得到了解决
  • 「Debian/Ubuntu」- 常用仓库(源)整理 @20210318

    Debian Debian Stable deb https mirrors aliyun com debian stable main contrib non free deb https mirrors aliyun com debia
  • 物流定位系统项目qt代码

    头文件 ifndef USER INTERFACE H define USER INTERFACE H include lt QWidget gt include lt QLabel gt include lt QMouseEvent gt
  • Django中ImageField的使用

    from django db import models from django contrib import admin Create your models here class AdminUser models Model login
  • 四旋翼无人机原理以及组装过程

    1 硬件组成 xff1a 机架 xff0c 4个螺旋桨 xff0c 4个电机 xff0c 4个电调 xff0c 1信号接收器 xff0c 1个飞控板 xff0c 1个 稳压模块 xff0c 一个电池 螺旋桨 xff1a 四个螺旋桨都要提供升
  • 2021-09-08

    工业相机精度调研 本文主要总结工业相机中面阵和线阵相机的精度调研 面阵相机 xff1a 检测场景 xff1a 常用的高精度为3 45微米相元相机 xff0c 常规可搭配0 5 xff0c 1 xff0c 2 xff0c 4倍远心镜头 在4倍
  • 22年新款MacBookAir屏幕解析

    先说结论 xff1a 搭载M2芯片的AIR xff0c 很值得买 屏幕 xff1a Liquid视网膜显示屏 像素 xff1a 2550 1664 亮度 xff1a 500nit 色域 xff1a P3 技术 xff1a 原彩显示技术 Li
  • 不确定需求条件下的供应链决策分析 (zt)

    xff11 供应链与不确定性 xff11 xff0e xff11 供应链关系的特征 供应链关系不应简单理解为是由产品制造上的相关关系 xff08 即从原材料到半成品再到最终产品的转换过程 xff09 而形成的企业之间的相关关系 xff0c
  • Halcon无图像旋转时的图像拼接

    为了将尺寸较大的产品拍完 xff0c 可采用分区拍摄再拼图的方式 那么 xff0c 如何使用Halcon中的算子进行图像拼接呢 xff1f 本文介绍一种在相机无旋转的情况下使用tile images offset进行图像拼接的方法 该方法计
  • Halcon中count_obj算子及其异常分析

    count obj算子 count obj算子是用来计算输入区域中连通域的个数 更直观的说法是 xff0c 计算Region中有几个单独的区域 一般用在connection算子之后 xff0c 该算子的作用是将输入区域分割成单独的连通域 异
  • Halcon中 reduce_domain算子和crop_domain算子的使用及配合

    1 reduce domain算子 reduce domain span class hljs keyword Image span Region ImageReduced 其中 xff0c span class hljs keyword
  • 卷帘曝光和全局曝光的差别

    全局曝光和卷帘曝光是常见的相机曝光方式 一般来说 xff0c CCD相机是全局曝光 xff0c 而CMOS相机则存在卷帘曝光 那么 xff0c 这两种方式孰优孰劣呢 xff1f 或者说 xff0c 他们两者的差别在哪里呢 xff1f 那么
  • 自动化设备的软件框架

    自动化设备的软件主要由2部分组成 xff1a 1是运动控制部分的软件实现 xff0c 2是上位机处理数据并显示结果的软件实现 运动控制的实现 第1部分的实现主要有2种方式 xff0c 一种是用板卡控制的方式 xff0c 一种是用PLC控制的
  • Halcon中两种实现旋转的方法rotate_image和affine_trans_image

    Halcon中实现旋转的方式由两种 一种是rotate image xff0c 该方式实现简单 xff0c 但只能绕中心旋转 二是affine trans image xff0c 该方式实现较复杂 xff0c 但是可以实现绕任意位置的旋转
  • 一文搞定深度学习入门级电脑硬件配置

    对于刚接触深度学习的学友而言 xff0c 可能都会碰到电脑配置的问题 xff0c 比如显卡型号 内存容量 处理器型号等 好的电脑配置 xff0c 比如GPU加速的显卡 xff0c 是能够有效缩短算法的训练时间的 xff0c 这能让人尽快的看
  • 一文详解numpy中np.nonzero()函数

    np nonzero函数是numpy中用于得到数组array中非零元素的位置 xff08 数组索引 xff09 的函数 一般来说 xff0c 通过help xff08 np nonzero xff09 能够查看到该函数的解析与例程 但是 x