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

函数说明

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

发布了85 篇原创文章 · 获赞 82 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/yl_best/article/details/102593264