# Numpy Filter array

## Filtering Arrays

Filtering items form an array and generating a new array out of them is called filtering. We can filter an array using a boolean index list in a Numpy ndarray. A boolean index list is a list of booleans corresponding to indexes in the array. The values corresponding to True are included and the values corresponding to the False are excluded from the resultant array.

```import numpy as np
nums = np.array([10, 20, 30, 40, 50])
f = [True, False, True, False, True]
result = nums[f]
print(result)

#Output
[10 30 50]
```

## Creating and using a Filter array

It can be time-consuming and complex to create a hard-coded filter array, but we can create and populate a filter array programmatically.

For example,

```import numpy as np

nums = np.array([10, 20, 30, 40 , 50, 60, 70, 80, 90])

# Create an empty list
filter_nums = []

# go through each element in array

for item in nums:
# if the element is divisible by 20,
# set the value to True, otherwise False
if item % 20 == 0:
filter_nums.append(True)
else:
filter_nums.append(False)

result=nums[filter_nums]

print(filter_nums)
print(result)

#output
[False, True, False, True, False, True, False, True, False]
[20 40 60 80]
```

OR

```import numpy as np

nums = np.array([10, 20, 30, 40 , 50, 60, 70, 80, 90])
filter_arr = (nums%20 == 0)
newarr = nums[filter_arr]

print(filter_arr)
print(newarr)

#Output
[False  True False  True False  True False  True False]
[20 40 60 80]
```

## Creating a filter array for 2-D array

```import numpy as np

nums = np.array([[10, 20, 30],[40 , 50, 60], [70, 80, 90]])
filter_arr = (nums%20 == 0)
newarr = nums[filter_arr]

print(filter_arr)
print(newarr)

#Output
[[False  True False]
[ True False  True]
[False  True False]]
[20 40 60 80]
```