J
Jorl Shefner
Could anyone tell me the efficient way to do this? Extracting values
from an array for a single condition (say all values greater than 'x')
using 'where' and 'compress' is simple enough.
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.
Is there a more concise way?
Thanks,
J.S.
from an array for a single condition (say all values greater than 'x')
using 'where' and 'compress' is simple enough.
array([4, 5, 6, 7, 8, 9])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
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.
array([4, 5, 6, 7])mask1= where((data > 3),data,0)
mask1 array([0, 0, 0, 0, 4, 5, 6, 7, 8, 9])
mask2= where((mask1<= 7),mask1,0)
mask2 array([0, 0, 0, 0, 4, 5, 6, 7, 0, 0])
r= compress(mask2,data)
r
Is there a more concise way?
Thanks,
J.S.