所以我有以下条件:
A = 0到10或者40到60
B = 20到50
而我有这段代码:
area1 = N.where((A>0) & (A<10)),1,0)
area2 = N.where((B>20) & (B<50)),1,0)
我的问题是:如何在numpy中执行“OR”条件?
&
重载了and,那么你可以安全地认为|
是布尔运算符or。area1 = N.where(((A>0) & (A<10)) | ((A>40) & (A<60))),1,0)
这里有 numpy.logical_or
http://docs.scipy.org/doc/numpy/reference/generated/numpy.logical_or.html
logical_and
和 logical_or
是你想要的ufuncs(我认为)
请注意,&
不是 logical and
,它是位运算符的 and
。这在这种情况下仍然适用,因为(a>10)返回一个逻辑数组(例如1和0),你的第二个条件也一样。所以,在这种情况下,“逻辑 and”和“位 and”是等效的(逻辑和位运算或也是如此)。但在其他情况下,位运算可能会产生出人意料的结果(主要是因为Python的&
和|
运算符在这些上下文中具有比预期更低的优先级)。
&
是按位与运算符...但在这种情况下无关紧要,因为 (A>0) 是一个由True
/False
(即1
和0
)组成的数组。 - mgilson