【发布时间】:2015-03-06 14:19:46
【问题描述】:
要知道验证两个条件的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)
但是验证这两个条件的元素的结果是错误的。我不明白为什么。
【问题讨论】:
-
我没有看到 OR 运算符。
-
对 numpy 布尔值的算术运算很俗气,依赖它们并不是最好的主意。此外,它们使您的代码晦涩难懂且难以解释。如果处理布尔数组,请使用位运算符:
&for and,|for or,^for xor and~for not。 -
如果一个答案解决了您的问题,请接受它作为解决方案,如here
标签: python arrays numpy logical-operators