1 numpy.all()
all()函数用于判断整个数组中的元素的值是否全部满足条件,如果满足条件返回True,否则返回False。本质上讲,all()
实现了或(AND)运算
numpy.all(a, axis=None, out=None, keepdims=<no value>)
参数 | 含义 | 返回值 |
a | 输入可转换为数组的数组或对象 | ndarray,bool 除非指定out,否则将返回一个新的布尔值或数组,在这种情况下,将返回对out的引用。 |
axis | None或int或int的元组,可选。沿轴或轴执行逻辑AND减少。 默认值(axis = None)是对输入数组的所有维度执行逻辑AND。 轴可以是负的,在这种情况下,它从最后一个轴到第一个轴计数。 | |
out | ndarray,可选 | |
keepdims | bool,可选。 |
-
栗子1
import numpy as np
# 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
-
栗子2
import numpy as np
a = np.eye(5)
print(a)
print(((a == 0) | (a == 1)).all())
print((a == 0).all())
# result
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
True
False
2 numpy.any()
np.array.any()是或操作,任意一个元素为True,输出为True。本质上讲,any()
实现了或(OR)运算。
numpy.any(a, axis=None, out=None, keepdims=<no value>)
-
栗子1
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
-
栗子2
import numpy as np
a = np.eye(5)
print(a)
print((a == 0).all())
print((a == 0).any())
# result
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
False
True
3 判断np.array是否相等
首先,我们看一下list和np.array的区别:
lst1 = [1,3,5,7,9]
lst2 = [2,4,6,8,10]
print(lst1 == lst2)
# result
False
import numpy as np
a = np.eye(5)
b = np.eye(5)
c = np.ones((5, 5))
print(a)
print(b)
print(c)
print((a == b))
print((a == c))
# result
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
[[ True True True True True]
[ True True True True True]
[ True True True True True]
[ True True True True True]
[ True True True True True]]
[[ True False False False False]
[False True False False False]
[False False True False False]
[False False False True False]
[False False False False True]]
可以看出:用 “==” 判断两个list 是否相同,返回的是True或False,而np.array返回的是每个元素值比较的列表。
那么如何比较两个np.array,而不是其中的元素呢?
import numpy as np
a = np.eye(5)
b = np.eye(5)
c = np.ones((5, 5))
print(a)
print(b)
print(c)
print((a == b))
print((a == c))
print((a == b).all()) # a.shape 与 b.shape需相同,否则会出错
print((a == c).all())
print((a == c).any())
# results
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
[[ True True True True True]
[ True True True True True]
[ True True True True True]
[ True True True True True]
[ True True True True True]]
[[ True False False False False]
[False True False False False]
[False False True False False]
[False False False True False]
[False False False False True]]
True
False
True
a == b返回的仍然是np.array类型的数组,因此,再通过.all()方法即可判断a、b是否相等。
注:a.shape 与 b.shape需相同,否则会出错。
参考: