关于numpy中np.nonzero()函数用法的详解


Posted in Python onFebruary 07, 2017

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值上对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开始。

以上这篇关于numpy中np.nonzero()函数用法的详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的异常处理简明介绍
Apr 13 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
python中os模块详解
Oct 14 Python
Python的语言类型(详解)
Jun 24 Python
python如何读写json数据
Mar 21 Python
python编写暴力破解zip文档程序的实例讲解
Apr 24 Python
我就是这样学习Python中的列表
Jun 02 Python
pyenv与virtualenv安装实现python多版本多项目管理
Aug 17 Python
用Python开发app后端有优势吗
Jun 29 Python
Python如何将模块打包并发布
Aug 30 Python
pycharm专业版远程登录服务器的详细教程
Sep 15 Python
Pycharm学生免费专业版安装教程的方法步骤
Sep 24 Python
Python脚本实现自动将数据库备份到 Dropbox
Feb 06 #Python
一张图带我们入门Python基础教程
Feb 05 #Python
详解python脚本自动生成需要文件实例代码
Feb 04 #Python
Python中文件I/O高效操作处理的技巧分享
Feb 04 #Python
Django应用程序中如何发送电子邮件详解
Feb 04 #Python
Python算法应用实战之栈详解
Feb 04 #Python
Python算法应用实战之队列详解
Feb 04 #Python
You might like
javascript的事件描述
2006/09/08 Javascript
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
2014/01/13 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
关于js原型的面试题讲解
2016/09/25 Javascript
Javascript实现汉字和拼音互转的终极方案
2016/10/19 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
python设置windows桌面壁纸的实现代码
2013/01/28 Python
python计数排序和基数排序算法实例
2014/04/25 Python
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
python如何运行js语句
2020/09/09 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
微信小程序之html5 canvas绘图并保存到系统相册
2019/06/20 HTML / CSS
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
汽车检测与维修个人求职信
2013/09/24 职场文书
教师自荐书
2013/10/08 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
借条格式范本
2015/05/25 职场文书
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript