NumPy Array Filteren

Array filtering

Het uitnemen van enkele elementen uit een bestaande array om een nieuwe array te maken wordt filtering genoemd.

In NumPy gebruiken we boolean index lists om arrays te filteren.

Boolean index lists zijn lijsten van booleaanse waarden die overeenkomen met de indices in de array.

als de waarde op de index Truedan wordt het element opgenomen in de gefilterde array; als de waarde op de index Falsedan wordt het element uitgesloten van de gefilterde array.

Example

een array maken met elementen op indices 0 en 2, 4:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
x = [True, False, True, False, True]
newarr = arr[x]
print(newarr)

Run Instance

Het voorbeeld hierboven zal [61, 63, 65]waarom?

Omdat de nieuwe filter alleen de waarden van de filterarray bevat True waarbij de waarden, dus in dit geval, de indices 0 en 2, 4 zijn.

een filterarray gemaakt

In het voorbeeld hierboven, hebben we True en False De waarde is hardgecodeerd, maar de gebruikelijke toepassing is om een filterarray te maken op basis van voorwaarden.

Example

Create a filter array that returns only values greater than 62:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
# Create an empty list
filter_arr = []
# Traverse each element in arr
for element in arr:
  # Als het element groter is dan 62, wordt de waarde ingesteld op True, anders op False:
  if element > 62:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Run Instance

Example

Create a filter array that returns only even elements from the original array:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
# Create an empty list
filter_arr = []
# Traverse each element in arr
for element in arr:
  # If the element can be divided by 2, set the value to True, otherwise set it to False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Run Instance

Create a filter directly from the array

The example is a very common task in NumPy, and NumPy provides a good method to solve this problem.

We can directly replace the array in the condition instead of the iterable variable, and it will work as expected.

Example

Create a filter array that returns only values greater than 62:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
filter_arr = arr > 62
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Run Instance

Example

Create a filter array that returns only even elements from the original array:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
filter_arr = arr % 2 == 0
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Run Instance