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