Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to filter a numpy array using another array's values?

Tags:

I have two NumPy arrays, e.g.:

a = [1,2,3,4,5] 

and a filter array, e.g.:

f = [False, True, False, False, True]  len(a) == len(f) 

How can I get a new numpy array with only the values in a where the same index in f is True? In my case: [2, 5].

According to the accepted solution (with different values):

>>> a = numpy.array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10]) >>> b = numpy.array([True, False, True, False, True, False, True, False, True, False]) >>> a[b] array([1, 3, 5, 7, 9]) 
like image 204
Michel Keijzers Avatar asked Feb 15 '12 15:02

Michel Keijzers


People also ask

How we can filter values evaluate values in NumPy arrays?

In NumPy, you filter an array using a boolean index list. A boolean index list is a list of booleans corresponding to indexes in the array. If the value at an index is True that element is contained in the filtered array, if the value at that index is False that element is excluded from the filtered array.

How do you filter an array of objects in Python?

The filter() function will return a new array containing all the array elements that pass the given condition. If no elements pass the condition it returns an empty array. The filter() function loops or iterate over each array element and pass each element to the callback function.

Can NumPy have mixed data types?

Having a data type (dtype) is one of the key features that distinguishes NumPy arrays from lists. In lists, the types of elements can be mixed.


1 Answers

NumPy supports boolean indexing

a[f] 

This assumes that a and f are NumPy arrays rather than Python lists (as in the question). You can convert with f = np.array(f).

like image 83
YXD Avatar answered Sep 18 '22 17:09

YXD