Heltalsindeksering af Arrays
Ud over grundlæggende indeksering, hvor et enkelt heltal bruges som indeks, tillader NumPy også brug af et helt 1D-array af heltal (en liste af heltal er også mulig) til indeksering.
Indeksering med heltalsarrays i 1D-arrays
Hvert element i heltalsarrayet, der bruges til indeksering, behandles som et indeks, så for eksempel vil array[[0, 1, 3]] hente elementerne ved indeks 0, 1 og 3 i form af et 1D-array, forudsat at array selv er et 1D-array. Du kan også bruge NumPy-arrays til indeksering, men det gør koden mere omfattende.
12345678import 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]])
Heltalsindeksering i 1D-arrays
Når det gælder 2D og højere-dimensionelle arrays, fungerer heltalsindeksering på samme måde som i 1D-arrays langs hver akse. Hvis der kun bruges én heltalsarray til indeksering, indekseres der kun langs én akse (akse 0). Hvis der bruges to arrays adskilt af et komma, indekseres der langs begge akser (akse 0 og akse 1).
Indeksering kun langs akse 0 ved hjælp af en array af heltal returnerer et 2D array. Når elementer tilgås via denne indeksering, grupperes de i et nyt array. Dette nye array består af 1D arrays, og gruppering øger dimensionaliteten med én, hvilket resulterer i et 2D array.
Indeksering langs akse 0 og akse 1 ved brug af to arrays af heltal returnerer et 1D array.
Alle heltalsarrays, der bruges for hver af akserne, skal have samme form.
123456789101112131415import 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 grundlæggende heltalsindeksering og heltalsarray-indeksering.
Hvis mindst ét af indeksene er uden for grænserne, kastes der igen en IndexError.
Med hensyn til anvendelser er denne form for indeksering nyttig, når du skal vælge specifikke elementer, der ikke ligger ved siden af hinanden eller ikke følger en fast rækkefølge. I modsætning til slicing, som arbejder med sammenhængende intervaller, giver denne metode dig mulighed for at vælge præcis hvilke elementer der skal hentes. Det er nyttigt, når du vil udtrække spredte data eller omarrangere værdier i et array.
1. Du analyserer de månedlige salgsdata (i tusinder) for fem produkter. Hvad er outputtet af koden?
2. temperatures-arrayet repræsenterer ugentlige temperaturer (i °C) for tre byer over mandag, tirsdag og onsdag. Vælg den korrekte mulighed for at hente temperaturerne for Berlin mandag og tirsdag samt Madrid tirsdag.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you explain how negative indices work with integer array indexing?
What happens if the arrays used for indexing have different lengths?
Can you give more examples of combining basic and integer array indexing?
Awesome!
Completion rate improved to 3.7
Heltalsindeksering af Arrays
Stryg for at vise menuen
Ud over grundlæggende indeksering, hvor et enkelt heltal bruges som indeks, tillader NumPy også brug af et helt 1D-array af heltal (en liste af heltal er også mulig) til indeksering.
Indeksering med heltalsarrays i 1D-arrays
Hvert element i heltalsarrayet, der bruges til indeksering, behandles som et indeks, så for eksempel vil array[[0, 1, 3]] hente elementerne ved indeks 0, 1 og 3 i form af et 1D-array, forudsat at array selv er et 1D-array. Du kan også bruge NumPy-arrays til indeksering, men det gør koden mere omfattende.
12345678import 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]])
Heltalsindeksering i 1D-arrays
Når det gælder 2D og højere-dimensionelle arrays, fungerer heltalsindeksering på samme måde som i 1D-arrays langs hver akse. Hvis der kun bruges én heltalsarray til indeksering, indekseres der kun langs én akse (akse 0). Hvis der bruges to arrays adskilt af et komma, indekseres der langs begge akser (akse 0 og akse 1).
Indeksering kun langs akse 0 ved hjælp af en array af heltal returnerer et 2D array. Når elementer tilgås via denne indeksering, grupperes de i et nyt array. Dette nye array består af 1D arrays, og gruppering øger dimensionaliteten med én, hvilket resulterer i et 2D array.
Indeksering langs akse 0 og akse 1 ved brug af to arrays af heltal returnerer et 1D array.
Alle heltalsarrays, der bruges for hver af akserne, skal have samme form.
123456789101112131415import 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 grundlæggende heltalsindeksering og heltalsarray-indeksering.
Hvis mindst ét af indeksene er uden for grænserne, kastes der igen en IndexError.
Med hensyn til anvendelser er denne form for indeksering nyttig, når du skal vælge specifikke elementer, der ikke ligger ved siden af hinanden eller ikke følger en fast rækkefølge. I modsætning til slicing, som arbejder med sammenhængende intervaller, giver denne metode dig mulighed for at vælge præcis hvilke elementer der skal hentes. Det er nyttigt, når du vil udtrække spredte data eller omarrangere værdier i et array.
1. Du analyserer de månedlige salgsdata (i tusinder) for fem produkter. Hvad er outputtet af koden?
2. temperatures-arrayet repræsenterer ugentlige temperaturer (i °C) for tre byer over mandag, tirsdag og onsdag. Vælg den korrekte mulighed for at hente temperaturerne for Berlin mandag og tirsdag samt Madrid tirsdag.
Tak for dine kommentarer!