关于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 02 Python
Python写入数据到MP3文件中的方法
Jul 10 Python
Saltstack快速入门简单汇总
Mar 01 Python
python爬取NUS-WIDE数据库图片
Oct 05 Python
Python基于回溯法子集树模板解决全排列问题示例
Sep 07 Python
Django ORM框架的定时任务如何使用详解
Oct 19 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
Python二叉搜索树与双向链表转换算法示例
Mar 02 Python
Python单例模式的四种创建方式实例解析
Mar 04 Python
安装多个版本的TensorFlow的方法步骤
Apr 21 Python
Python如何使用正则表达式爬取京东商品信息
Jun 01 Python
教你用Python写一个植物大战僵尸小游戏
Apr 25 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编程之高级技巧——利用Mysql函数
2006/10/09 PHP
PHP设置一边执行一边输出结果的代码
2013/09/30 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
2016/11/07 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
JavaScript中常见陷阱小结
2010/04/27 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
2015/11/04 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
python3调用windows dos命令的例子
2019/08/14 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
weblogic面试题
2016/03/07 面试题
品学兼优的大学生自我评价
2013/09/20 职场文书
工作推荐信范文
2014/05/10 职场文书
2014年个人债务授权委托书范本
2014/09/22 职场文书
小学生手册家长意见
2015/06/03 职场文书
2015初中团支部工作总结
2015/07/21 职场文书