是什么解释了列表与numpy.arrays上布尔运算和按位运算的行为差异?
我对在python中正确使用' &'vs' and' 感到困惑,如下面的简单示例所示.
mylist1 = [True, True, True, False, True]
mylist2 = [False, True, False, True, False]
>>> len(mylist1) == len(mylist2)
True
# ---- Example 1 ----
>>> mylist1 and mylist2
[False, True, False, True, False]
# I would have expected [False, True, False, False, False]
# ---- Example 2 ----
>>> mylist1 & mylist2
TypeError: unsupported operand type(s) for &: 'list' and 'list'
# Why not just like example 1?
>>> import numpy as np …Run Code Online (Sandbox Code Playgroud) 当两个条件True在矩阵中时,选择元素的方法是什么?在R中,基本上可以组合布尔的向量.
所以我的目标是:
A = np.array([2,2,2,2,2])
A < 3 and A > 1 # A < 3 & A > 1 does not work either
Run Code Online (Sandbox Code Playgroud)
Evals to:ValueError:具有多个元素的数组的真值是不明确的.使用a.any()或a.all()
它应该评估为:
array([True,True,True,True,True])
Run Code Online (Sandbox Code Playgroud)
我的解决方法通常是将这些布尔向量相加并等于2,但必须有更好的方法.它是什么?