Cursusinhoud
Ultieme NumPy
Ultieme NumPy
Indexering van Gehele Getallen
Afgezien van basisindexering, waarbij we een geheel getal gebruiken voor een enkele index, staat NumPy ons ook toe om een volledige 1D-array van gehele getallen (een lijst van gehele getallen is ook mogelijk) te gebruiken voor indexering.
Integer Array Indexering in 1D Arrays
Elk element van de gehele getallenarray die voor indexering wordt gebruikt, wordt behandeld als een index, dus bijvoorbeeld array[[0, 1, 3]]
haalt elementen op bij indices 0
, 1
en 3
in de vorm van een 1D-array, ervan uitgaande dat array
zelf een 1D-array is. Je kunt ook NumPy-arrays gebruiken voor indexering, maar dat maakt de code meer lastig.
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]])
Integer Array Indexering in 1D Arrays
Als we het hebben over 2D en hoger-dimensionale arrays, werkt integer array indexering hetzelfde als in 1D arrays langs elke as. Als we slechts één integer array gebruiken voor indexering, indexeren we langs slechts één as (as 0). Als we twee arrays gebruiken gescheiden door een komma, indexeren we langs beide assen (as 0 en as 1).
Indexeren alleen langs as 0 met behulp van een array van gehele getallen retourneert een 2D array. Wanneer we elementen benaderen via dergelijke indexering, groeperen we ze in een nieuwe array. Deze nieuwe array bestaat uit 1D arrays, en het groeperen ervan verhoogt de dimensionaliteit met één, resulterend in een 2D array.
Indexeren langs as 0 en as 1 met behulp van twee arrays van gehele getallen retourneert een 1D array.
Opmerking
Alle gehele arrays die voor elk van de assen worden gebruikt, moeten dezelfde vorm hebben.
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]])
Zoals je kunt zien, kunnen we ook basis gehele getal indexering en gehele getal array indexering combineren.
Opmerking
Nogmaals, als ten minste één van de indices buiten bereik is, wordt een
IndexError
gegenereerd.
Wat betreft toepassingen, is dergelijke indexering nuttig wanneer je specifieke elementen moet selecteren die niet naast elkaar liggen of geen regelmatige volgorde volgen. In tegenstelling tot slicing, dat werkt met doorlopende reeksen, laat deze methode je precies kiezen welke elementen je wilt ophalen. Het is handig wanneer je verspreide gegevens wilt extraheren of waarden in een array wilt herschikken.
1. Je analyseert de maandelijkse verkoopgegevens (in duizenden) voor vijf producten. Wat is de uitvoer van de code?
2. De temperatures
array vertegenwoordigt de wekelijkse temperaturen (in °C) van drie steden over maandag, dinsdag en woensdag. Selecteer de juiste optie om de temperaturen van Berlijn op maandag en dinsdag, en Madrid op dinsdag op te halen.
Bedankt voor je feedback!