Python NumPy.all()与any()函数理解

2021-01-04 10:10:23 浏览数 (2)

参考链接: Python中的numpy.zeros_like

函数说明 

numpy.all() 

 all(a, axis=None, out=None, keepdims=np._NoValue) Test whether all array elements along a given axis evaluate to True. 

判断给定轴向上的***所有元素是否都为True*** 零为False,其他情况为True 如果axis为None,返回单个布尔值True或False 

 Notes ----- Not a Number (NaN), positive infinity and negative infinity evaluate to True because these are not equal to zero. 

笔者翻译:不是数字(NaN),正无穷大和负无穷大的值都是’True’,因为它们不等于零。 

numpy.all()代码 

# NumPy all() 判断矩阵中 所有元素 是否 都为True

a2 = np.arange(5)       # 生成一个矩阵 [0  1  2  3  4]

print("np.all(a2):", np.all(a2))    # 输出:False

a3 = np.array([0, 3, 0, 0, 0])  # 随手写一个矩阵  [0  3  0  0  0]

print("np.all(a3):", np.all(a3))  # 输出:False

a4 = np.zeros_like(a3)       # 生成一个全是零的矩阵,形状与a3一样 [0  0  0  0  0]

print("np.all(a4):", np.all(a4))  # 输出:False

a5 = np.full_like(a3, False)  # 生成一个全是False的矩阵,形状与a3一样

print("np.all(a5):", np.all(a5))  # 输出:False

a6 = np.full_like(a3, True)  # 生成一个全是True的矩阵,形状与a3一样

print("np.all(a6):", np.all(a6))  # 输出:True

numpy.any() 

 any(a, axis=None, out=None, keepdims=np._NoValue) Test whether any array element along a given axis evaluates to True. Returns single boolean unless axis is not None 

判断给定轴向上***是否有一个元素为True*** 如果axis为None,返回单个布尔值True或False 

numpy.any() 代码 

# import the necessary packages

import numpy as np

# NumPy any() 判断矩阵中 是否 有一个元素 为True

a2 = np.arange(5)       # 生成一个矩阵 [0  1  2  3  4]

print("np.any(a2):", np.any(a2))    # 输出:True

a3 = np.array([0, 3, 0, 0, 0])  # 随手写一个矩阵

print("np.any(a3):", np.any(a3))  # 输出:True

a4 = np.zeros_like(a3)       # 生成一个全是零的矩阵,形状与a3一样 [0  0  0  0  0]

print("np.any(a4):", np.any(a4))  # 输出:False

a5 = np.full_like(a3, False)  # 生成一个全是False的矩阵,形状与a3一样

print("np.any(a5):", np.any(a5))  # 输出:False

a6 = np.full_like(a3, True)  # 生成一个全是True的矩阵,形状与a3一样

print("np.any(a6):", np.any(a6))  # 输出:True

应用 

基本用法 

b1 = np.arange(36).reshape(2, 3, 6)     # # 创建一个2*3*6矩阵`

print("b1:n", b1)

输出结果 

 [[[ 0 1 2 3 4 5] [ 6 7 8 9 10 11] [12 13 14 15 16 17]] [[18 19 20 21 22 23] [24 25 26 27 28 29] [30 31 32 33 34 35]]] 

print("np.all(b1):", np.all(b1))    # 判断矩阵中所有元素是否都为True

输出结果 

 np.all(b1): False 

print("np.any(b1):", np.any(b1))    # 判断矩阵中是否有一个为True

输出结果 

 np.any(b1): True 

print("b1 < 15:n", b1 < 15)        # 判断矩阵中每个元素是否小于15

输出结果 

 b1 < 15: [[[ True True True True True True] [ True True True True True True] [ True True True False False False]] [[False False False False False False] [False False False False False False] [False False False False False False]]] 

进阶用法 

b02 = np.all(b1, axis=0, keepdims=True)      # 判断矩阵中 某个轴向上 所有元素是否都为True

print("np.all(b1, axis=0):n", b02)

输出结果 

 np.all(b1, axis=0): [[[False True True True True True] [ True True True True True True] [ True True True True True True]]] 

b03 = np.any(b1, axis=0, keepdims=True)      # 判断矩阵中 某个轴向上 是否有一个元素为True

print("np.any(b1, axis=0):n", b03)

输出结果 

 np.any(b1, axis=0): [[[ True True True True True True] [ True True True True True True] [ True True True True True True]]] 

b02 = np.all(b1 < 15, axis=0, keepdims=True)      # 判断矩阵中 某个轴向上 所有元素是否都小于15

print("(np.all(b1 < 15, axis=0):n", b02)

输出结果 

 (np.all(b1 < 15, axis=0): [[[False False False False False False] [False False False False False False] [False False False False False False]]] 

b03 = np.any(b1 < 15, axis=0, keepdims=True)      # 判断矩阵中 某个轴向上 是否有一个元素小于15。所有元素都大于15为False,有一个小于15即为True

print("np.any(b1 < 15, axis=0):n", b03)

输出结果 

 np.any(b1 < 15, axis=0): [[[ True True True True True True] [ True True True True True True] [ True True True False False False]]] 

axis等于1或2(不能超过2)时大家自己试验吧。 

关于axis = 0/1/2/3…的分析 

请参考下面的文章 《Python NumPy中sum函数详解 axis与keepdims图解》 

更多numpy.all() sample code 

可以参考 https://www.programcreek.com/python/example/4960/numpy.all

0 人点赞