from an array for a single condition (say all values greater than 'x')

using 'where' and 'compress' is simple enough.

from Numeric import arange,where,compress

data= arange(10)

data= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

mask= where((data > 3),1,0)

result= compress(mask,data)

result

data= arange(10)

data= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

mask= where((data > 3),1,0)

result= compress(mask,data)

result

But, 'where' doesn't appear to allow for multiple conditions in one

statement. For instance, I'd like to do something like:

mask= where((3 < data <= 7),1,0)

but, this won't work.

So, the best I could come up with was this more complicated process that

requires 2 separate masks and an extra temporary array.

mask1= where((data > 3),data,0)

mask1

mask1

mask2= where((mask1<= 7),mask1,0)

mask2

mask2

r= compress(mask2,data)

r

r

Is there a more concise way?

Thanks,

J.S.