Utflating av Matriser
Flatting en matrise betyr å konvertere den fra en flerdimensjonal matrise til en 1D-matrise, i hovedsak å avdekke innholdet.
Denne operasjonen er nyttig når du trenger å behandle elementene i en matrise en etter en eller når du vil gjøre data mer egnet for visse algoritmer.
Det er tre mulige alternativer for flatting i NumPy:
Bruke
ndarray.reshape(-1)
-metoden ellernumpy.reshape(array, -1)
-funksjonen;Bruke
ndarray.ravel()
-metoden ellernumpy.ravel(array)
-funksjonen;Bruke
ndarray.flatten()
-metoden.
reshape(-1)
Metoden .reshape(-1)
eller funksjonen reshape(array, -1)
vil returnere en sammenhengende flatet matrise med samme antall elementer.
Som vi allerede har nevnt i forrige kapittel, beregner -1
automatisk størrelsen på dimensjonen basert på den opprinnelige matrisens størrelse. Siden vi bare sender et enkelt heltall for shape
, returneres en 1D-matrise med samme antall elementer.
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 funksjonen returnerer en visning av den opprinnelige arrayen, så eventuelle endringer gjort på den omformede arrayen vil også påvirke den opprinnelige arrayen.
Å bruke flattened_array = np.reshape(array_2d, -1)
kan brukes i stedet for å kalle metoden.
ravel()
Metoden ndarray.ravel()
eller funksjonen numpy.ravel(array)
fungerer på samme måte som reshape(-1)
og returnerer også en visning av den opprinnelige 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 brukes i stedet for å kalle metoden.
ndarray.flatten()
Hvis du ønsker en kopi av den opprinnelige arrayen, ikke en visning, kan du bruke .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}')
Merk
Du kan alltid kopiere en visning av en matrise for å lage et separat objekt og endre denne kopien uten å påvirke den opprinnelige matrisen.
Swipe to start coding
-
Bruk
.flatten()
metoden korrekt for å flate utexam_scores
og lagre resultatet iexam_scores_flattened
. -
Bruk
.reshape()
metoden korrekt for å flate utexam_scores
og lagre resultatet iexam_scores_reshaped
. -
Bruk
.ravel()
metoden for å flate utexam_scores
og lagre resultatet iexam_scores_raveled
. -
Av de tre opprettede flate matrisene, velg den som er en kopi av den opprinnelige matrisen, ikke en visning, og tilordne
100
til det første elementet (bruk positiv indeksering).
Løsning
Takk for tilbakemeldingene dine!