Multiple conditions using 'or' in numpy array

Question:

So I have these conditions:

A = 0 to 10 OR 40 to 60

B = 20 to 50

and I have this code:

area1 = N.where((A>0) & (A<10)),1,0)
area2 = N.where((B>20) & (B<50)),1,0)

My question is: how do I do ‘OR‘ condition in numpy?

Asked By: rudster

||

Answers:

If numpy overloads & for boolean and you can safely assume that | is boolean or.

area1 = N.where(((A>0) & (A<10)) | ((A>40) & (A<60))),1,0)
Answered By: ThiefMaster

There’s numpy.logical_or

http://docs.scipy.org/doc/numpy/reference/generated/numpy.logical_or.html

numpy logical_and and logical_or are the ufuncs that you want (I think)

Note that & is not logical and, it is bitwise and. This still works for you because (a>10) returns a logical array (e.g. 1’s and 0’s) as does your second condition. So, in this case, “logical and” and “bitwise and” are equivalent (same with logical and bitwise or). But in other cases, the bitwise operations may yield surprising results (mostly because python’s & and | operators have lower precedence than expected in these contexts).

Answered By: mgilson
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.