NumPy- filterarray


Arrays filteren

Sommige elementen uit een bestaande array halen en er een nieuwe array van maken, wordt filteren genoemd .

In NumPy filter je een array met behulp van een boolean index list .

Een booleaanse indexlijst is een lijst met booleans die overeenkomen met indexen in de array.

Als de waarde bij een index is Truedat dat element in de gefilterde array zit, als de waarde bij die index Falsedat element is, wordt dat element uitgesloten van de gefilterde array.

Voorbeeld

Maak een array van de elementen op index 0 en 2:

import numpy as np

arr = np.array([41, 42, 43, 44])

x = [True, False, True, False]

newarr = arr[x]

print(newarr)

Het bovenstaande voorbeeld komt terug [41, 43], waarom?

Omdat het nieuwe filter alleen de waarden bevat waar de filterarray de waarde had True, in dit geval index 0 en 2.


De filterarray maken

In het bovenstaande voorbeeld hebben we de True en False-waarden hard gecodeerd, maar het algemene gebruik is om een ​​filterarray te maken op basis van voorwaarden.

Voorbeeld

Maak een filterarray die alleen waarden hoger dan 42 retourneert:

import numpy as np

arr = np.array([41, 42, 43, 44])

# Create an empty list
filter_arr = []

# go through each element in arr
for element in arr:
  # if the element is higher than 42, set the value to True, otherwise False:
  if element > 42:
    filter_arr.append(True)
  else:
    filter_arr.append(False)

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)


Voorbeeld

Maak een filterarray die alleen even elementen uit de originele array retourneert:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

# Create an empty list
filter_arr = []

# go through each element in arr
for element in arr:
  # if the element is completely divisble by 2, set the value to True, otherwise False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)

Filter rechtstreeks vanuit array maken

Het bovenstaande voorbeeld is een vrij veel voorkomende taak in NumPy en NumPy biedt een leuke manier om het aan te pakken.

We kunnen de array direct vervangen in plaats van de itereerbare variabele in onze toestand en het zal werken zoals we verwachten.

Voorbeeld

Maak een filterarray die alleen waarden hoger dan 42 retourneert:

import numpy as np

arr = np.array([41, 42, 43, 44])

filter_arr = arr > 42

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)

Voorbeeld

Maak een filterarray die alleen even elementen uit de originele array retourneert:

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)