【发布时间】:2018-11-20 22:10:23
【问题描述】:
以下有什么区别:
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'。
【问题讨论】:
-
这些更适用于布尔数组。预期的操作是什么?
-
对于整数,只有 0 算作
False。由于您的示例没有任何 0,all和any都返回True。 -
这里要理解的一点是,您实际上从未将
a中的任何内容与b中的任何内容进行比较。a.any()和b.all()这两个表达式是自行计算的(正如其他 cmets 中所解释的,它们都计算为True),因此您最终检查的是True == True,这也是True. -
感谢您的回复。作为后续,我将如何检查 a 中的至少一个元素是否与 b 相同,以及如何检查 a 中的所有元素是否与 b 相同(在相同的序列中,因此是相同的数组)。我想我可以减去它们,然后使用 any() 和 all()?
标签: python arrays numpy logic conditional-statements