I have a list (let's call it L1) with plenty of decimal values. How do I remove all values outside of some specified range while keeping all values within the range?
For instance, let's say I define my range as [-1, 1] and
L1 = [-2, 0.1, 0.75, 4]
I would want my output to be a new list, i.e.
L2 = [0.1, 0.75]
I've heard there was a way to do this with numpy (though I can't find the SO question for the life of me), but I was wondering if there was another way, just using the built-in functions (of course if numpy is better for this sort of thing, then that's fine too).
You can do it using boolean indexing with NumPy. For large lists/arrays this can be much faster than a list comprehension or filter approach:
>>> import numpy as np
>>> L1 = [-2, 0.1, 0.75, 4]
>>> A1 = np.array(L1) # convert it to an array
>>> A1[(A1 >= -1) & (A1 <= 1)] # remove all values that are not in the range [-1, 1]
array([ 0.1 , 0.75])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With