Omforme Matriser
Omforming av matriser i NumPy lar deg endre formen på en matrise samtidig som alle elementene bevares. Det er en vanlig operasjon i maskinlæring siden mange funksjoner og metoder i maskinlæringsbiblioteker krever at matriser har en spesifikk form.
Matriseformer
For eksempel, en 1D-array med lengde 5
har en form på (5,)
, mens en 2D-array med 3
rader og 4
kolonner har en form på (3, 4)
:
import numpy as np array_1d = np.array([5, 7, 1, 10, 9]) array_2d = np.zeros((3, 4)) print(array_1d.shape, array_2d.shape)
ndarray.reshape()
NumPy-arrayer har en .reshape()
-metode for omforming. Du trenger bare å sende formen til den resulterende arrayen enten som et heltall, en tuple av heltall, eller heltall som separate argumenter.
Denne metoden endrer ikke arrayen på stedet, men returnerer en ny array.
Merk
Faktisk returnerer
.reshape()
en visning av den opprinnelige arrayen, så eventuelle endringer gjort på den omformede arrayen vil også påvirke den opprinnelige arrayen.
import numpy as np # Creating a 1D array from 0 to 11 inclusive array = np.arange(12) # Reshaping the array to a 3x4 2D array (matrix) reshaped_array_2d = array.reshape(3, 4) print(reshaped_array_2d) # Reshaping the array to a 2x2x3 3D array reshaped_array_3d = array.reshape(2, 2, 3) print(reshaped_array_3d)
Merk
Antall elementer i den omformede arrayen må være det samme som i den opprinnelige arrayen, så du kan ikke bruke en vilkårlig form.
I vårt eksempel, å endre formen på arrayen til en form med 3 rader og 4 kolonner (3 x 4) eller til en form med 2 blokker, hver inneholdende 2 rader og 3 kolonner (2 x 2 x 3) resulterer fortsatt i totalt 12 elementer.
Omforming med -1
I NumPy, når du bruker -1
i .reshape()
-metoden, beregner den automatisk størrelsen på den dimensjonen basert på den opprinnelige arrayens størrelse, samtidig som det totale antallet elementer forblir det samme.
Å bruke .reshape(-1, 1)
er spesielt nyttig i maskinlæring når vi trenger å omforme en 1D-array til en 2D-array med én kolonne. Antall rader i dette tilfellet er lik antall elementer (beregnet automatisk).
import numpy as np # Creating a 1D array from 0 to 4 inclusive array = np.arange(5) # Reshaping the array to a 2D array with one column reshaped_array = array.reshape(-1, 1) print(reshaped_array)
Den omformede arrayen er lagret som en 2D-array med 5
rader og 1
kolonne, med formen (5, 1)
. I motsetning har den opprinnelige 1D-arrayen formen (5,)
, som er en tuple med et enkelt element. For enhver 1D-array er formen alltid (n,)
, der n
representerer antall elementer.
numpy.reshape()
reshape()
-funksjonen i NumPy er identisk med .reshape()
-metoden, men du bør sende en array som dens første argument. For shape
-parameteren kan du sende enten en tuple av heltall eller et enkelt heltall, f.eks. np.reshape(array, (3, 4))
:
import numpy as np # Creating a 1D array from 0 to 11 inclusive array = np.arange(12) # Reshaping the array to a 3x4 2D array (matrix) reshaped_array_2d = np.reshape(array, (3, 4)) print(reshaped_array_2d)
Swipe to start coding
Du har en sales_data_2021
array med simulert kvartalsvis salgsdata for to produkter i 2021. De første 4 elementene representerer kvartalsvis salg for det første produktet, og de siste 4 elementene representerer kvartalsvis salg for det andre produktet.
-
Bruk den passende metoden for
sales_data_2021
for å omforme den til en 2D-array. -
Den første raden skal inneholde kvartalsvis salg for det første produktet.
-
Den andre raden skal inneholde kvartalsvis salg for det andre produktet.
Løsning
Takk for tilbakemeldingene dine!