在numpy数组中使用'或'的多个条件

时间:2012-04-30 00:01:03

标签: python numpy

所以我有这些条件:

  

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 '条件?

2 个答案:

答案 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_andlogical_or是您想要的ufunc(我认为)

请注意,&不是logical and,而是按位 and。这仍然适用于您,因为(a> 10)返回逻辑数组(例如1和0),第二个条件也是如此。因此,在这种情况下,“逻辑”和“按位和”是等效的(与逻辑和按位or相同)。但在其他情况下,按位运算可能会产生令人惊讶的结果(主要是因为python的&|运算符的优先级低于这些情境中的预期值。)