关于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对两个有序列表进行合并和排序的例子
Jun 13 Python
详解Python中for循环的使用
Apr 14 Python
Python基于Tkinter实现的记事本实例
Jun 17 Python
python解析基于xml格式的日志文件
Feb 25 Python
Python多进程原理与用法分析
Aug 21 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
Sep 16 Python
使用TensorFlow搭建一个全连接神经网络教程
Feb 06 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
Feb 28 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
Django搭建项目实战与避坑细节详解
Dec 06 Python
教你用Python matplotlib库制作简单的动画
Jun 11 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
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
php实现两个数组相加的方法
2015/02/17 PHP
php实现字符串反转输出的方法
2015/03/14 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
jQuery textarea的长度进行验证
2009/05/06 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
[37:22]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第一局
2016/02/28 DOTA
使用httplib模块来制作Python下HTTP客户端的方法
2015/06/19 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
对python中assert、isinstance的用法详解
2019/11/27 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
Python安装Bs4的多种方法
2020/11/28 Python
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
风险评估实施方案
2014/03/09 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
董事长开业致辞
2015/07/29 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
Ajax实现异步加载数据
2021/11/17 Javascript