NumPy Array Filtrering
- Forrige Side NumPy Array Sortering
- Næste Side NumPy Tilfældighed
Array filtrering
At tage nogle elementer fra en eksisterende array og oprette et nyt array kaldes filtrering (filtering).
I NumPy bruger vi en boolsk indeksliste til at filtrere arrayet.
En boolsk indeksliste er en liste over boolske værdier, der korresponderer til indekserne i arrayet.
Hvis værdien ved indekset er True
, så vil elementet inkluderes i den filtrerede array; hvis værdien ved indekset er False
, så vil elementet blive udeladt fra den filtrerede array.
Eksempel
Opret en array ved hjælp af elementerne på indekserne 0 og 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)
Det foregående eksempel vil returnere [61, 63, 65]
Hvorfor?
Fordi den nye filter indeholder kun værdier i filterarrayen True
værdien, så i dette tilfælde er indekserne 0 og 2, 4.
oprettet en filterarray
I det foregående eksempel har vi True
og False
Værdien er hårdkoded, men den almindelige brug er at oprette en filterarray baseret på betingelser.
Eksempel
Opret en filterarray, der kun returnerer værdier, der er større end 62:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) # Opret en tom liste filter_arr = [] # Gennemløb hver element i arr for element in arr: # Hvis elementet er større end 62, sættes værdien til True, ellers til False: hvis element > 62: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
Eksempel
Opret en filterarray, der kun returnerer de tal fra den oprindelige array, der er lige:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) # Opret en tom liste filter_arr = [] # Gennemløb hver element i arr for element in arr: # Hvis elementet kan divides med 2 uden rest, sæt værdien til True, ellers sæt den til False if element % 2 == 0: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
Opret filter direkte fra array
Det er et meget almindeligt opgave i NumPy, og NumPy tilbyder gode metoder til at løse dette problem.
Vi kan erstatte arrayet direkte i betingelsen i stedet for iterable variablen, og det vil fungere som forventet.
Eksempel
Opret en filterarray, der kun returnerer værdier, der er større end 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)
Eksempel
Opret en filterarray, der kun returnerer de tal fra den oprindelige array, der er lige:
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)
- Forrige Side NumPy Array Sortering
- Næste Side NumPy Tilfældighed