关于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实现上传样本到virustotal并查询扫描信息的方法
Oct 05 Python
Python中AND、OR的一个使用小技巧
Feb 18 Python
Python简单实现Base64编码和解码的方法
Apr 29 Python
你眼中的Python大牛 应该都有这份书单
Oct 31 Python
使用python将图片按标签分入不同文件夹的方法
Dec 08 Python
python实现三次样条插值
Dec 17 Python
python 与服务器的共享文件夹交互方法
Dec 27 Python
opencv python统计及绘制直方图的方法
Jan 21 Python
Python中print和return的作用及区别解析
May 05 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 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
编写Smarty插件在模板中直接加载数据的详细介绍
2013/06/26 PHP
详谈PHP文件目录基础操作
2014/11/11 PHP
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
jquery ajax 局部刷新小案例
2014/02/08 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
Web开发必知Javascript技巧大全
2016/02/23 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
Python实现的二维码生成小软件
2014/07/11 Python
python 网络编程详解及简单实例
2017/04/25 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
利用python如何处理nc数据详解
2018/05/23 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
Python连接Redis的基本配置方法
2018/09/13 Python
为什么Python中没有"a++"这种写法
2018/11/27 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
Super-Pharm波兰:药房和香水在一个地方
2020/08/18 全球购物
JDK安装目录下有哪些内容
2014/08/25 面试题
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
学年个人总结范文
2015/03/05 职场文书
暖春观后感
2015/06/08 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers