关于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进行TCP网络编程的教程
Apr 29 Python
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
Flask-Mail用法实例分析
Jul 21 Python
python入门:这篇文章带你直接学会python
Sep 14 Python
Python面向对象之继承和多态用法分析
Jun 08 Python
django之静态文件 django 2.0 在网页中显示图片的例子
Jul 28 Python
Django自定义用户表+自定义admin后台中的字段实例
Nov 18 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
Dec 19 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 Python
python 通过 pybind11 使用Eigen加速代码的步骤
Dec 07 Python
Python的collections模块真的很好用
Mar 01 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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正则表达式(regar expression)
2011/09/10 PHP
PHP Cookie的使用教程详解
2013/06/03 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
实现超用户体验 table排序javascript实现代码
2009/06/22 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
js带闹铃功能的倒计时代码
2016/09/29 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
python模拟登录百度贴吧(百度贴吧登录)实例
2013/12/18 Python
利用django如何解析用户上传的excel文件
2017/07/24 Python
Django开发中复选框用法示例
2018/03/20 Python
python3 xpath和requests应用详解
2020/03/06 Python
Python中如何添加自定义模块
2020/06/09 Python
python怎么调用自己的函数
2020/07/01 Python
python实现网页录音效果
2020/10/26 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
搞笑获奖感言
2014/01/30 职场文书
2014年3.15团委活动总结
2014/03/16 职场文书
农村面貌改造提升实施方案
2014/03/18 职场文书
高三励志标语
2014/06/05 职场文书
党性心得体会
2014/09/03 职场文书
财务工作失职检讨书
2014/11/21 职场文书
祝酒词范文
2015/08/12 职场文书
Python+Appium新手教程
2021/04/17 Python
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers