single
Arrays Afvlakken
Veeg om het menu te tonen
Afvlakken van een array betekent het omzetten van een multi-dimensionale array naar een 1D-array, waarbij de inhoud wordt ontvouwd.
Deze bewerking is nuttig wanneer de elementen van een array één voor één verwerkt moeten worden of wanneer de data geschikter gemaakt moet worden voor bepaalde algoritmen.
Er zijn drie mogelijke opties voor het afvlakken in NumPy:
- Gebruik van de methode
ndarray.reshape(-1)of de functienumpy.reshape(array, -1); - Gebruik van de methode
ndarray.ravel()of de functienumpy.ravel(array); - Gebruik van de methode
ndarray.flatten().
reshape(-1)
De methode .reshape(-1) of de functie reshape(array, -1) retourneert een aaneengesloten afgevlakte array met hetzelfde aantal elementen.
Zoals reeds vermeld in het vorige hoofdstuk, berekent -1 automatisch de grootte van de dimensie op basis van de oorspronkelijke arraygrootte. Omdat slechts één geheel getal voor shape wordt doorgegeven, wordt een 1D-array met hetzelfde aantal elementen geretourneerd.
1234567import 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 overeenkomstige functie retourneert een view van de originele array, waardoor wijzigingen in de reshaped array ook effect hebben op de originele array.
Het gebruik van flattened_array = np.reshape(array_2d, -1) kan worden toegepast 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:
1234567import 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 in plaats van een view, kun je de .flatten()-methode gebruiken:
1234567import 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}')
Je kunt altijd een kopie van een view van een array maken om een apart object te creëren en deze kopie te wijzigen zonder het originele array te beïnvloeden.
Veeg om te beginnen met coderen
- Gebruik de
.flatten()methode correct omexam_scoreste 'flattenen' en sla het resultaat op inexam_scores_flattened. - Gebruik de
.reshape()methode correct omexam_scoreste 'flattenen' en sla het resultaat op inexam_scores_reshaped. - Gebruik de
.ravel()methode omexam_scoreste 'flattenen' en sla het resultaat op inexam_scores_raveled. - Kies uit de drie gemaakte 'flattened' arrays degene die een kopie is van de originele array, geen view, en ken
100toe aan het eerste element (gebruik positieve indexering).
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.