怎么会这样呢?
X=np.array([range(1,12)])
A=X>4
B=X<10
C=(X>4) | (X<10)
print (X[A])
print (X[B])
print (X[C])
[ 5 6 7 8 9 10 11]
[1 2 3 4 5 6 7 8 9]
[ 1 2 3 4 5 6 7 8 9 10 11]
答案 0 :(得分:3)
我猜您担心的是因为最终表达式中包含了每个元素,仅仅是因为前两个很明显(5..11
都大于4而1..9
都小于比十)。
但是第三个也是 ,因为 every 元素大于四个 或 。数字1..9
都小于十,因此它们在其中。同样,5..11
都大于四,因此它们也在其中。这两个范围的并集是整个值集。
如果您想要的项目介于四个 和 (两端除外)之间,则您应该使用“ and”而不是“ or”({ {1}}代替&
):
|
输出为:
import numpy as np
X=np.array([range(1,12)])
A=X>4
B=X<10
C=(X>4) | (X<10)
D=(X>4) & (X<10)
E=(X<=4) | (X>=10)
print (X[A])
print (X[B])
print (X[C])
print (X[D])
print (X[E])
因为您没有在原始问题中指定想要的 ,所以我还添加了相反的操作(以获取该范围内的 not 值)。 [ 5 6 7 8 9 10 11]
[1 2 3 4 5 6 7 8 9]
[ 1 2 3 4 5 6 7 8 9 10 11]
[5 6 7 8 9]
[ 1 2 3 4 10 11]
代码表明了这一点。