所以我有这些条件:
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 中执行“或”条件?
&
如果boolean 的numpy 重载,and
您可以放心地假设它|
是 boolean 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
numpylogical_and
并且logical_or
是你想要的 ufunc(我认为)
注意&
不是logical and
,它是按位 and
的。这仍然适用于您,因为 (a>10) 与您的第二个条件一样返回一个逻辑数组(例如 1 和 0)。因此,在这种情况下,“逻辑与”和“按位与”是等价的(与逻辑和位相同or
)。但在其他情况下,按位运算可能会产生令人惊讶的结果(主要是因为在这些上下文中,python&
和|
运算符的优先级低于预期)。