Omformning af Arrays
Array omformning i NumPy giver dig mulighed for at ændre formen på en array, mens alle elementerne bevares. Det er en almindeligt anvendt operation i maskinlæring, da mange funktioner og metoder i maskinlæringsbiblioteker kræver, at arrays har en specifik form.
Array Former
For eksempel har en 1D-array med længden 5
en form på (5,)
, mens en 2D-array med 3
rækker 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 arrays har en .reshape()
metode til omformning. Du skal blot angive formen af den resulterende array enten som et heltal, en tuple af heltal, eller heltal som separate argumenter.
Denne metode ændrer ikke arrayen på stedet, men returnerer en ny array.
Bemærk
Faktisk returnerer
.reshape()
en visning af den oprindelige array, så eventuelle ændringer foretaget på den omformede array vil også påvirke den oprindelige array.
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)
Bemærk
Antallet af elementer i det omformede array skal være det samme som i det oprindelige array, så du kan ikke angive en vilkårlig form.
I vores eksempel resulterer omformning af arrayet til en form med 3 rækker og 4 kolonner (3 x 4) eller til en form med 2 blokke, hver indeholdende 2 rækker og 3 kolonner (2 x 2 x 3) stadig i i alt 12 elementer.
Omformning med -1
I NumPy, når du bruger -1
i .reshape()
-metoden, beregner den automatisk størrelsen af den dimension baseret på den oprindelige arrays størrelse, mens det samlede antal elementer forbliver det samme.
At bruge .reshape(-1, 1)
er særligt nyttigt i maskinlæring, når vi har brug for at omforme en 1D-array til en 2D-array med én kolonne. Antallet af rækker i dette tilfælde er lig med antallet af 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 array er gemt som en 2D array med 5
rækker og 1
kolonne, med formen (5, 1)
. I modsætning hertil har den oprindelige 1D array formen (5,)
, hvilket er en tuple med et enkelt element. For enhver 1D array er formen altid (n,)
, hvor n
repræsenterer antallet af elementer.
numpy.reshape()
Funktionen reshape()
i NumPy er identisk med .reshape()
metoden, men du skal give en array som dens første argument. For shape
parameteren kan du give enten en tuple af heltal eller et enkelt heltal, 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 et sales_data_2021
array med simulerede kvartalsvise salgsdata for to produkter i 2021. De første 4 elementer repræsenterer kvartalsalget for det første produkt, og de sidste 4 elementer repræsenterer kvartalsalget for det andet produkt.
-
Brug den passende metode af
sales_data_2021
til at omforme det til et 2D array. -
Den første række skal indeholde kvartalsalget for det første produkt.
-
Den anden række skal indeholde kvartalsalget for det andet produkt.
Løsning
Tak for dine kommentarer!