Numpy如何检查数组全为零的几种方法
作者:笨牛慢耕 发布时间:2023-05-16 12:00:25
概要
简单介绍几种用于判断numpy数组是否全零的测试方法。
1 numpy.any()
numpy.any()函数用于检查一个numpy数字是否存在任何一个非0元素,因此将numpy.any()的结果取反即得“numpy数组是否全0”的结果。例如:
import numpy as np
print('Using numpy.any()...')
a_1D = np.zeros(5)
print('Is a_1D all zeros?: ', not(np.any(a_1D)))
print('Is a_1D all zeros?: ', ~(np.any(a_1D)))
a_1D[2] = -1
print('Is a_1D all zeros?: ', not(np.any(a_1D)))
a_2D = np.zeros((2,3))
print(a_2D)
print('Is a_2D all zeros?: ', not(np.any(a_2D)))
a_2D[1,2] = 0.1
print('Is a_2D all zeros?: ', not(np.any(a_2D)))
输出结果:
Using numpy.any()...
Is a_1D all zeros?: True
Is a_1D all zeros?: True
Is a_1D all zeros?: False
[[0. 0. 0.]
[0. 0. 0.]]
Is a_2D all zeros?: True
Is a_2D all zeros?: False
注意,python中逻辑取反可以用"~"也可以用"not",但是不能用“!”(“!=”是比较运算符--comparison operator, 只能用于比如说"b!=c"这样)。另外,"~"和"not"也是有区别的,参见以下第4节。
2 numpy.count_nonzero()
numpy.count_nonzero()用于对数组的0元素个数进行计数,因此也可以用来执行是否全0的判断。用法如下:
print('Using numpy.nonzero()...')
a = np.array([1,2,3,0,0,1])
print('Number of zeros in a = ',np.count_nonzero(a))
print('Is a all zeros?: ', np.count_nonzero(a)==0)
a[:] = 0 # Force a to all-zeros array
print('Is a all zeros?: ', np.count_nonzero(a)==0)
print('Is a all zeros?: ', not np.count_nonzero(a))
Using numpy.nonzero()...
Number of zeros in a = 4
Is a all zeros?: False
Is a all zeros?: True
Is a all zeros?: True
3 numpy.all()
用numpy.all()也可以实现这一功能。以下例子利用了python内部会自动进行0--False, 1--True的转换。
print('')
print('Using numpy.all()...')
a = np.zeros(10)
print('Is a all zeros?: ', np.all(a==0))
Using numpy.all()...
Is a all zeros?: True
4. 多维数组可以分axis进行判断
对于多维数组(这正是numpy正真发挥强悍实力的地方)以上函数在缺省情况下是对整个数组进行统一判断,但是也可以通过axis参数指定沿指定轴分别处理。如下例所示:
print('')
print('Judge according to the specified axis')
a_2D = np.zeros((2,3))
a_2D[1,2] = 0.1
print(a_2D)
print('Is each col of a_2D all zeros?: ', ~(np.any(a_2D, axis=0)))
print('Is each row of a_2D all zeros?: ', ~(np.any(a_2D, axis=1)))
Judge according to the specified axis
[[0. 0. 0. ]
[0. 0. 0.1]]
Is each col of a_2D all zeros?: [ True True False]
Is each row of a_2D all zeros?: [ True False]
当指定axis=0时相当于对2维数组按列判断是否全0,指定axis=1时相当于对2维数组按行判断是否全0。当然,这里所说的行和列的概念是从传统的2维数组或者矩阵里继承而来的概念,当考虑更高维数组的时候,行和列这个概念就不再适用了。关于高维数组(也称:Tensor,张量)的axis将另文介绍。
另外,前面提到表示逻辑取反的“~”和“not”是有所不同的。具体来说就是,not只接受一个操作数,因此以上这个例子如果将"~"改为not的话会报错,如下所示:
print('Is each col of a_2D all zeros?: ', not(np.any(a_2D, axis=0)))
print('Is each row of a_2D all zeros?: ', not(np.any(a_2D, axis=1)))
报错如下:
而“~”是所谓的Bitwise NOT operator.
如果"~"的输入是一个整数的的话,它会将输入数的所有比特都取反。如果是一个numpy 数组的话,则会对其中每一个数执行按位逻辑取反操作。如果是一个numpy布尔类型(True, False)数组的话,则会对其中每一个布尔数执行逻辑取反操作--以上例子中正是这种用法。
来源:https://blog.csdn.net/chenxy_bwave/article/details/120798048
猜你喜欢
- 1. 问题抓取某个网站,发现请求参数是乱码格式,这是点击 TextView,发现请求参数如下图所示3. 那么=%B9%FA%CE%F1%D4
- 目录1.列表的介绍2.打印出列表的数据1.我们可以根据下标取值进行打印2.使用for循环遍历3.使用while循环遍历3.列表的添加操作1.
- python写入文件取消自动换行问题描述使用pycharm进行文件写入时,发现如果一行文字的长度过长,写入的过程则会自动换行,如何取消自动换
- 今天继续给大家介绍Python相关知识,本文主要内容是Python asyncio异步编程常见问题。一、asyncio编程简单示例首先,我们
- 导读:pandas中最常用的数据结构是DataFrame,而DataFrame相较于嵌套list或者二维numpy数组更好用的原因之一在于其
- 在本文中,我们将探讨一种简洁的方式,以此来可视化你的MP3音乐收藏。此方法最终的结果将是一个映射你所有歌曲的正六边形网格地图,其中相似的音轨
- alert table 表名 add column 列名 alter table 表名 drop column 列名 eg: alter t
- 我们在学习Python的时候,除了用pip安装一些模块之外,有时候会从网站下载安装包下来安装,我也想要把我自己编写的模块做成这样的安装包,该
- 先来看看基本的定义:channel是Go语言中的一个核心类型,可以把它看成管道。并发核心单元通过它就可以发送或者接收数据进行通讯,这在一定程
- 安全性问题一直DBA是比较关心的问题,因为建立数据库的目的就是让相关的的客户端来进行访问,所以很难避免不出现安全隐患,例如客户端链接的权限、
- 制作自己的训练集下图是我们数据的存放格式,在data目录下有验证集与测试集分别对应iris_test, iris_train 为了向伟大的M
- PySide是一个免费的软件,与PyQt不同之处在于使用了LGPL,允许PySide免费的开发商业软件。 PySide有15个模块。这些模块
- 首先在文件夹中添加_init_.py文件,即使是空文件也可以,多层文件夹,每层文件夹中都要添加。比如我要import,a文件夹中,b文件夹下
- 前言本文中代码运行的python版本一律采取2.7.13科普:经典类:classic class新式类:new-style classpyt
- 在web应用中,常常会遇见点击某个链接会弹出一个新的窗口,或者是相互关联的web应用 ,这样要去操作新窗口中的元素,这时就需要主机切换到新窗
- Python通过yield提供了对协程的基本支持,但是不完全。而第三方的gevent为Python提供了比较完善的协程支持。gevent是第
- 利用numpy和scipy,我们可以很容易根据欧拉角求出旋转矩阵,这里的旋转轴我们你理解成四元数里面的旋转轴 import nu
- 我使用的Python3.5,32版本win764位系统,pandas0.19版本,使用df=pd.read_clipboard()的时候读不
- 深入认识Python内建类型——dict注:本篇是根据教程学习记录的笔记,部分内容与教程是相同的,因
- Numpy学习1 Numpy 介绍与应用1-1Numpy是什么NumPy 是一个运行速度非常快的数学库,一个开源的的python科学计算库,