Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Heltalsmatrisindexering | Indexering och Skivning
Ultimata NumPy

book
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.

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]])
12345678
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]])
copy

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.

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]])
123456789101112131415
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]])
copy

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.

question mark

Du analyserar månadsförsäljningsdata (i tusental) för fem produkter. Vad är utdata från koden?

import numpy as np
sales = np.array([120, 200, 150, 300, 250])
result = sales[[1, 3, 4]]
print(result)

Select the correct answer

question mark

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.

import numpy as np
temperatures = np.array([
[25, 28, 26], # Berlin
[30, 32, 31], # Madrid
[22, 21, 23] # New York
])

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 5

Fråga AI

expand
ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

We use cookies to make your experience better!
some-alt