Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Delete all values in list outside of specified range python

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).

like image 357
RealFL Avatar asked Oct 24 '25 19:10

RealFL


1 Answers

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])
like image 97
MSeifert Avatar answered Oct 27 '25 08:10

MSeifert