Arrays Afvlakken
Afvlakken van een array betekent dat je het omzet van een multi-dimensionale array naar een 1D array, waarbij de inhoud wordt ontrold.
Deze operatie is nuttig wanneer je de elementen van een array één voor één moet verwerken of wanneer je de data geschikter wilt maken voor bepaalde algoritmen.
Er zijn drie mogelijke opties voor afvlakken in NumPy:
Gebruik de
ndarray.reshape(-1)
methode of denumpy.reshape(array, -1)
functie;Gebruik de
ndarray.ravel()
methode of denumpy.ravel(array)
functie;Gebruik de
ndarray.flatten()
methode.
reshape(-1)
De .reshape(-1)
methode of de reshape(array, -1)
functie zal een aaneengesloten afgevlakte array retourneren met hetzelfde aantal elementen.
Zoals we al in het vorige hoofdstuk hebben vermeld, berekent -1
automatisch de grootte van de dimensie op basis van de grootte van de oorspronkelijke array. Aangezien we slechts één enkel geheel getal voor shape
doorgeven, wordt een 1D array met hetzelfde aantal elementen geretourneerd.
import numpy as np array_2d = np.array([[1, 2, 3], [4, 5, 6]]) flattened_array = array_2d.reshape(-1) print(f'Flatenned array: {flattened_array}') # Changing the first element of flattened_array flattened_array[0] = 10 print(f'Modified initial array:\n{array_2d}')
De .reshape()
methode of de respectieve functie retourneert een view van de originele array, dus alle wijzigingen die in de omgevormde array worden aangebracht, zullen ook de originele array beïnvloeden.
Het gebruik van flattened_array = np.reshape(array_2d, -1)
kan worden gebruikt in plaats van het aanroepen van de methode.
ravel()
De ndarray.ravel()
methode of de numpy.ravel(array)
functie werkt hetzelfde als reshape(-1)
en retourneert ook een view van de originele array:
import numpy as np array_2d = np.array([[1, 2, 3], [4, 5, 6]]) flattened_array = array_2d.ravel() print(f'Flatenned array: {flattened_array}') # Changing the first element of flattened_array flattened_array[0] = 10 print(f'Modified initial array:\n{array_2d}')
flattened_array = np.ravel(array_2d)
kan worden gebruikt in plaats van het aanroepen van de methode.
ndarray.flatten()
Als je een kopie van de originele array wilt, niet een view, kun je de .flatten()
methode gebruiken:
import numpy as np array_2d = np.array([[1, 2, 3], [4, 5, 6]]) flattened_array = array_2d.flatten() print(f'Flatenned array: {flattened_array}') # Changing the first element of flattened_array flattened_array[0] = 10 print(f'Initial array:\n{array_2d}')
Opmerking
Je kunt altijd een kopie van een weergave van een array maken om een apart object te creëren en deze kopie te wijzigen zonder de originele array te beïnvloeden.
Swipe to start coding
-
Gebruik de
.flatten()
methode correct voor het afvlakken vanexam_scores
en sla het resultaat op inexam_scores_flattened
. -
Gebruik de
.reshape()
methode correct voor het afvlakken vanexam_scores
en sla het resultaat op inexam_scores_reshaped
. -
Gebruik de
.ravel()
methode voor het afvlakken vanexam_scores
en sla het resultaat op inexam_scores_raveled
. -
Kies uit de drie gemaakte afgevlakte arrays degene die een kopie is van de originele array, niet een weergave, en ken
100
toe aan het eerste element (gebruik positieve indexering).
Oplossing
Bedankt voor je feedback!