Utjämning av Arrayer
Platta ut en array innebär att konvertera den från en flerdimensionell array till en 1D-array, i huvudsak att avveckla dess innehåll.
Denna operation är användbar när du behöver bearbeta elementen i en array en efter en eller när du vill göra data mer lämplig för vissa algoritmer.
Det finns tre möjliga alternativ för att platta ut i NumPy:
Använda metoden
ndarray.reshape(-1)
eller funktionennumpy.reshape(array, -1)
;Använda metoden
ndarray.ravel()
eller funktionennumpy.ravel(array)
;Använda metoden
ndarray.flatten()
.
reshape(-1)
Metoden .reshape(-1)
eller funktionen reshape(array, -1)
kommer att returnera en kontinuerlig platt array med samma antal element.
Som vi redan nämnt i föregående kapitel, beräknar -1
automatiskt storleken på dimensionen baserat på den ursprungliga arrayens storlek. Eftersom vi endast skickar ett heltal för shape
, returneras en 1D-array med samma antal element.
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}')
Metoden .reshape()
eller den respektive funktionen returnerar en vy av den ursprungliga arrayen, så alla ändringar som görs på den omformade arrayen kommer också att påverka den ursprungliga arrayen.
Att använda flattened_array = np.reshape(array_2d, -1)
kan användas istället för att anropa metoden.
ravel()
Metoden ndarray.ravel()
eller funktionen numpy.ravel(array)
fungerar på samma sätt som reshape(-1)
och returnerar också en vy av den ursprungliga arrayen:
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 användas istället för att anropa metoden.
ndarray.flatten()
Om du vill ha en kopia av den ursprungliga arrayen, inte en vy, kan du använda .flatten()
metoden:
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}')
Notera
Du kan alltid kopiera en vy av en array för att skapa ett separat objekt och ändra denna kopia utan att påverka den ursprungliga arrayen.
Swipe to start coding
-
Använd
.flatten()
metoden korrekt för att platta utexam_scores
och lagra resultatet iexam_scores_flattened
. -
Använd
.reshape()
metoden korrekt för att platta utexam_scores
och lagra resultatet iexam_scores_reshaped
. -
Använd
.ravel()
metoden för att platta utexam_scores
och lagra resultatet iexam_scores_raveled
. -
Av de tre skapade plattade arrayerna, välj den som är en kopia av den ursprungliga arrayen, inte en vy, och tilldela
100
till dess första element (använd positiv indexering).
Lösning
Tack för dina kommentarer!