关于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使用递归解决全排列数字示例
Feb 11 Python
用Python实现协同过滤的教程
Apr 08 Python
详解Django中Request对象的相关用法
Jul 17 Python
详解python中requirements.txt的一切
Mar 03 Python
Python模拟用户登录验证
Sep 11 Python
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 Python
对python产生随机的二维数组实例详解
Dec 13 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
Django对models里的objects的使用详解
Aug 17 Python
基于Python实现剪切板实时监控方法解析
Sep 11 Python
Pytorch在NLP中的简单应用详解
Jan 08 Python
Numpy 多维数据数组的实现
Jun 18 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中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
JavaScript 学习笔记(十一)
2010/01/19 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
ExtJs使用总结(非常详细)
2012/03/22 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
Vue.js表单控件实践
2016/10/27 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
ES6学习笔记之map、set与数组、对象的对比
2018/03/01 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
python模糊图片过滤的方法
2018/12/14 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
设计师个人求职信范文
2014/02/02 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
余世维讲座观后感
2015/06/11 职场文书
党员心得体会范文2016
2016/01/23 职场文书
php将xml转化对象的实例详解
2021/11/17 PHP