Understanding the use of any() and all() in numpy arrays

喜你入骨 提交于 2021-01-28 09:38:19

问题


What's the difference between the following:

a = np.array([2,3,4])
b = np.array([2,7,8])

if a.any() == b.all():
   print('yes')

and

a = np.array([2,3,4])
b = np.array([2,7,8])

if a.any() == b.any():
   print('yes')

In both situations, 'yes' is printed.


回答1:


any() and all() are intended for boolean arrays. any() returns True if there's any values that are equal to True in the array. all() returns True if all values in the array are equal to True. For integers/floats the functionality is similar, except that they return True if the value 0 is not found in the array. In your example, since both a.any() and a.all() will return True, it follows that a.any() == a.all().

Try executing the following code to see how it works in practice.

a = np.asarray([1,2,3])
b = np.asarray([-1,0,1])
c = np.asarray([True, False])

print(a.any())
print(a.all())

print(b.any())
print(b.all())

print(c.any())
print(c.all())



回答2:


On 1D numpy arrays of integers like yours, any will give you True if and only if some element is non-zero, whereas all will give you True if and only if all elements are non-zero.

So your first snippet of code translates into:
"Print yes if the answer to the question 'Is there some non-zero element in a?' is the same as the answer to 'Are all elements of b non-zero'?".

and the second into:
"Print yes if the answer to the question 'Is there some non-zero element in a?' is the same as the answer to 'Is there some non-zero element in b?'".



来源:https://stackoverflow.com/questions/50801454/understanding-the-use-of-any-and-all-in-numpy-arrays

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!