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 True
dat dat element in de gefilterde array zit, als de waarde bij die index
False
dat 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)