理解numpy数组中any()和all()的用法

tquggr8v  于 2023-11-18  发布在  其他
关注(0)|答案(3)|浏览(123)

以下内容有什么区别:

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

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

字符串

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

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


在这两种情况下,'yes'都被打印出来。

ma8fv8wu

ma8fv8wu1#

any()all()用于布尔数组。如果数组中有任何值等于True,则any()返回True。如果数组中的所有值都等于True,则all()返回True。对于整数/浮点数,功能类似,不同的是,如果在数组中找不到值0,则返回True。在您的示例中,由于a.any()a.all()都将返回True,因此a.any() == a.all()
尝试执行以下代码,看看它在实践中是如何工作的。

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())

字符串

ggazkfy8

ggazkfy82#

在像你这样的1D numpy整数数组中,当且仅当 some 元素不为零时,any将给予True,而当且仅当 all 元素不为零时,all将给予True
所以你的第一段代码翻译成:
“如果问题”在a中是否有非零元素?“的答案与”b的所有元素都非零吗?"的答案相同,则打印“是”。
第二个进入:
“如果问题”在a中是否有非零元素?“的答案与”在b中是否有非零元素?“的答案相同,则打印”是“。

5gfr0r5j

5gfr0r5j3#

我认为最初的帖子是由于在比较两个表时,对逻辑操作(例如==)和方法np.any()和np.all()的组合存在误解。根据@user2653663的回答,我认为值得通过以下示例来完成它:

import numpy as np
    a = np.asarray([1,2,3])
    b = np.asarray([1,0,1])
    print((a == b).any())
    print((a == b).all())
    True
    False

字符串
第一次打印将返回True,因为比较操作“cell by cell”在两个表中找到了至少一个相等的单元格;在我们的例子中是a[0] == b[0]。第二次打印返回False,因为不是所有的单元格都是相等的。你可以很容易地想象为什么这样做:

print(a == b)
[ True False False]

相关问题