1

以下内容有什么区别:

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'都是打印的。

4

2 回答 2

2

any()并且all()适用于布尔数组。如果数组中有任何等于的值,则any()返回。如果数组中的所有值都等于 ,则返回。对于整数/浮点数,功能类似,只是如果在数组中找不到值,它们会返回。在您的示例中,由于和都将返回,因此它遵循.TrueTrueall()TrueTrueTrue0a.any()a.all()Truea.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())
于 2018-06-11T16:04:58.170 回答
0

在像你这样的一维 numpy 整数数组上,当且仅当某个元素非零时会给你,而any当且仅当所有元素非零时才会给你。TrueallTrue

因此,您的第一个代码片段转换为:
“如果问题的答案是'Is there some non-zero element in ab与“所有元素都不是零吗?”的答案相同。

第二个进入:
“如果问题的答案是'是否有一些非零元素a?' ,则打印是” 与“中是否有一些非零元素b?”的答案相同。

于 2018-06-11T16:05:26.060 回答