逻辑或不使用numpy.logical_or - python

要知道验证两个条件的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)