您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python-'and'(boolean) vs '&' (bitwise)为什么列表与numpy数组在行为上有所不同?

Python-'and'(boolean) vs '&' (bitwise)为什么列表与numpy数组在行为上有所不同?

and测试两个表达式在逻辑上是否相符,True&(当与True/ False值一起使用时)测试两个表达式是否均在逻辑上True

在Python中,通常将空的内置对象在逻辑上视为,False而将非空的内置对象在逻辑上视为True。这可以简化常见的用例,在这种情况下,如果列表为空,则要执行某项操作;如果列表不为空,则要执行其他操作。请注意,这意味着列表[False]在逻辑上是True:

>>> if [False]:
...    print 'True'
...
True

因此,在示例1中,第一个列表是非空的,因此在逻辑上是True,因此的真值and与第二个列表的真值相同。(在我们的例子中,第二个列表是非空的,因此从逻辑上讲是True,但要识别出该列表将需要不必要的计算步骤。)

例如,列表2不能以位方式有意义地组合,因为它们可以包含任意不同的元素。可以按位组合的事物包括:对和错,整数。

相反,NumPy对象支持矢量化计算。也就是说,它们使你可以对多个数据执行相同的操作。

示例3失败,因为NumPy数组(长度> 1)没有真值,因为这可以防止基于矢量的逻辑混淆。

示例4只是一个向量化位and操作。

底线

如果你不处理数组并且不执行整数的数学运算,则可能需要and。

如果你有真值的载体,你想结合,使用numpy&

python 2022/1/1 18:21:51 有502人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶