要知道验证两个条件的numpy数组的元素,可以使用运算符*
:
>>> a = np.array([[1,10,2],[2,-6,8]])
>>> a
array([[ 1, 10, 7],
[ 2, -6, 8]])
>>> (a <= 6) * (a%2 == 0) # elements that are even AND inferior or equal to 6
array([[False, False, False],
[ True, True, False]], dtype=bool)
但是OR呢?我试图这样做:
>>> (a%2 == 0) + (a <= 6) - (a%2 == 0) * (a <= 6)
array([[ True, True, False],
[False, False, True]], dtype=bool)
但对于同时验证这两个条件的元素,结果为假。我不明白为什么。
python大神给出的解决方案
您不需要减法。
关键是+
已经表现得像or
运算符
>>(a%2==0)+(a<=6)
array([[ True, True, True],
[ True, True, True]], dtype=bool)
因为“ True+True=True
”。
减去(a<=6)*(a%2==0)
时,会将同时满足两个条件的所有元素转换为false
。
刚做的时候最简单
>>(a<=6)|(a%2==0)
array([[ True, True, True],
[ True, True, True]], dtype=bool)