所以我有这些条件:
A = 0至10 OR 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 '条件?
答案 0 :(得分:28)
如果numpy为布尔&
重载and
,你可以放心地假设|
是布尔or
。
area1 = N.where(((A>0) & (A<10)) | ((A>40) & (A<60))),1,0)
答案 1 :(得分:24)
有numpy.logical_or
http://docs.scipy.org/doc/numpy/reference/generated/numpy.logical_or.html
numpy logical_and
和logical_or
是您想要的ufunc(我认为)
请注意,&
不是logical and
,而是按位 and
。这仍然适用于您,因为(a> 10)返回逻辑数组(例如1和0),第二个条件也是如此。因此,在这种情况下,“逻辑”和“按位和”是等效的(与逻辑和按位or
相同)。但在其他情况下,按位运算可能会产生令人惊讶的结果(主要是因为python的&
和|
运算符的优先级低于这些情境中的预期值。)