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.
>>> 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 array([4, 5, 6, 7, 8, 9]) 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 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 array([4, 5, 6, 7]) Is there a more concise way? Thanks, J.S. -- http://mail.python.org/mailman/listinfo/python-list