Heltalsmatrisindexering
Förutom grundläggande indexering, där vi använder ett heltal för ett enda index, tillåter NumPy oss också att använda en hel 1D-array av heltal (en lista av heltal är också möjlig) för indexering.
Heltalsarrayindexering i 1D-arrayer
Varje element i heltalsarrayen som används för indexering behandlas som ett index, så till exempel hämtar array[[0, 1, 3]]
element vid index 0
, 1
och 3
i form av en 1D-array, givet att array
är en 1D-array i sig. Du kan också använda NumPy-arrayer för indexering, men det gör koden mer besvärlig.
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]])
Heltalsindexering i 1D-arrayer
När det gäller 2D och högre-dimensionella arrayer fungerar heltalsindexering på samma sätt som i 1D-arrayer längs varje axel. Om vi använder endast en heltalsarray för indexering, indexerar vi längs endast en axel (axel 0). Om vi använder två arrayer separerade med ett kommatecken, indexerar vi längs båda axlarna (axel 0 och axel 1).
Indexering endast längs axel 0 med en array av heltal returnerar en 2D-array. När vi får tillgång till element via sådan indexering, grupperar vi dem i en ny array. Denna nya array består av 1D-arrayer, och att gruppera dem ökar dimensionaliteten med en, vilket resulterar i en 2D-array.
Indexering längs axel 0 och axel 1 med två arrayer av heltal returnerar en 1D-array.
Notera
Alla heltalsarrayer som används för var och en av axlarna måste ha samma 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 också kombinera grundläggande heltalsindexering och heltalsarrayindexering.
Notera
Återigen, om minst ett av indexen är utanför gränserna, kastas ett
IndexError
.
När det gäller tillämpningar är sådan indexering användbar när du behöver välja specifika element som inte ligger bredvid varandra eller inte följer en regelbunden ordning. Till skillnad från skivning, som fungerar med kontinuerliga intervall, låter denna metod dig välja exakt vilka element du vill hämta. Det är hjälpsamt när du vill extrahera spridda data eller omorganisera värden i en array.
1. Du analyserar månadsförsäljningsdata (i tusental) för fem produkter. Vad är utdata från koden?
2. temperatures
-arrayen representerar veckotemperaturerna (i °C) för tre städer över måndag, tisdag och onsdag. Välj rätt alternativ för att hämta temperaturerna i Berlin på måndag och tisdag, och Madrid på tisdag.
Tack för dina kommentarer!
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal