Kursinnhold
Ultimate NumPy
Ultimate NumPy
Heltallsindeksering av Matriser
Bortsett fra grunnleggende indeksering, hvor vi bruker et heltall for en enkelt indeks, tillater NumPy oss også å bruke en hel 1D-array av heltall (en liste av heltall er også mulig) for indeksering.
Heltallsarray-indeksering i 1D-arrayer
Hvert element i heltallsarrayet som brukes til indeksering behandles som en indeks, så for eksempel, array[[0, 1, 3]]
henter elementene på indeksene 0
, 1
og 3
i form av en 1D-array, gitt at array
er en 1D-array selv. Du kan også bruke NumPy-arrayer for indeksering, men det gjør koden mer tungvint.
import numpy as np array = np.array([23, 41, 7, 80, 3]) # Retrieving elements at indices 0, 1 and 3 print(array[[0, 1, 3]]) # Retrieving elements at indices 1, -1 and 2 in this order print(array[[1, -1, 2]]) # IndexError is thrown since index 5 is out of bounds print(array[[2, 5]])
Heltallsindeksering i 1D-arrays
Når vi snakker om 2D og høyere-dimensjonale arrays, fungerer heltallsindeksering på samme måte som i 1D-arrays langs hver akse. Hvis vi bruker kun én heltallsarray for indeksering, indekserer vi langs kun én akse (akse 0). Hvis vi bruker to arrays adskilt av et komma, indekserer vi langs begge aksene (akse 0 og akse 1).
Indeksering kun langs akse 0 ved bruk av en array av heltall returnerer en 2D-array. Når vi får tilgang til elementer via slik indeksering, grupperer vi dem i en ny array. Denne nye arrayen består av 1D-arrays, og gruppering av dem øker dimensjonaliteten med én, noe som resulterer i en 2D-array.
Indeksering langs akse 0 og akse 1 ved bruk av to arrays av heltall returnerer en 1D-array.
Merk
Alle heltallsarrays brukt for hver av aksene må ha samme form.
import numpy as np array_2d = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]) # Retrieving first and the third row print(array_2d[[0, 2]]) # Retrieving the main diagonal elements print(array_2d[[0, 1, 2], [0, 1, 2]]) # Retrieving the first and third element of the second row print(array_2d[1, [0, 2]]) # IndexError is thrown, since index 3 along axis 0 is out of bounds print(array_2d[[0, 3], [0, 1]])
Som du kan se, kan vi også kombinere grunnleggende heltallsindeksering og heltallsarray-indeksering.
Merk
Nok en gang, hvis minst én av indeksene er utenfor grensene, kastes en
IndexError
.
Når det gjelder anvendelser, er slik indeksering nyttig når du trenger å velge spesifikke elementer som ikke er ved siden av hverandre eller ikke følger en regelmessig rekkefølge. I motsetning til slicing, som fungerer med kontinuerlige områder, lar denne metoden deg velge nøyaktig hvilke elementer du vil hente. Det er nyttig når du vil trekke ut spredte data eller omorganisere verdier i en array.
1. Du analyserer månedlige salgsdata (i tusen) for fem produkter. Hva er utdataene fra koden?
2. temperatures
-arrayet representerer ukentlige temperaturer (i °C) for tre byer over mandag, tirsdag og onsdag. Velg det riktige alternativet for å hente temperaturene i Berlin på mandag og tirsdag, og Madrid på tirsdag.
Takk for tilbakemeldingene dine!