NumPy filtera array
- Föregående Sida NumPy sortera array
- Nästa Sida NumPy slumpmässigt
Arrayfiltrering
Att ta ut några element från en befintlig array för att skapa en ny array kallas filtrering (filtering).
I NumPy använder vi en boolean indexlista för att filtrera arrayer.
En boolean indexlista är en lista med booleanvärden som motsvarar indexen i arrayen.
Om värdet på index är True
, kommer detta element att inkluderas i den filtrerade arrayen; om värdet på index är False
, kommer detta element att exkluderas från den filtrerade arrayen.
Exempel
Skapa en array med elementen på index 0 och 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)
Föregående exempel kommer att returnera [61, 63, 65]
varför?
Eftersom den nya filtern bara innehåller filterarrayen med värden True
värdet, så i detta fall är index 0 och 2, 4.
en filterarray
I föregående exempel, vi skapar True
och False
Värdet är hårdkodat, men vanligtvis används det för att skapa en filterarray baserat på villkor.
Exempel
Skapa en filterarray som endast returnerar värden större än 62:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) # Skapa en tom lista filter_arr = [] # Genomgå varje element i arr for element in arr: # Om elementet är större än 62, sätts värdet till True, annars till False: om element > 62: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
Exempel
Skapa en filterarray som endast returnerar jämna element från den ursprungliga arrayen:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) # Skapa en tom lista filter_arr = [] # Genomgå varje element i arr for element in arr: # Om elementet kan delas med 2 heltalsdivisio, sätt värden till True, annars sätt till False if element % 2 == 0: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
Skapa filter direkt från arrayen
Exempeln är en mycket vanlig uppgift i NumPy, och NumPy erbjuder bra metoder för att lösa detta problem.
Vi kan ersätta arrayen direkt i villkoret istället för iterable-variabeln, och det kommer att fungera som vi förväntar oss.
Exempel
Skapa en filterarray som endast returnerar värden större än 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)
Exempel
Skapa en filterarray som endast returnerar jämna element från den ursprungliga arrayen:
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)
- Föregående Sida NumPy sortera array
- Nästa Sida NumPy slumpmässigt