Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Omforme Matriser | Vanlig Brukte NumPy-Funksjoner
Ultimate NumPy

book
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)
1234
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)
copy

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)
123456789
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)
copy

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)
123456
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)
copy

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)
123456
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)
copy
Oppgave

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.

  1. Bruk den passende metoden for sales_data_2021 for å omforme den til en 2D-array.

  2. Den første raden skal inneholde kvartalsvis salg for det første produktet.

  3. Den andre raden skal inneholde kvartalsvis salg for det andre produktet.

Løsning

import numpy as np
# Simulated quarterly sales data for two products in 2021
sales_data_2021 = np.array([350, 420, 380, 410, 270, 320, 290, 310])
# Reshape the sales data to a 2D array using the appropriate method
sales_data_2021 = sales_data_2021.reshape(2, 4)
print(f'Quarterly sales in 2021 for product 1: {sales_data_2021[0]}')
print(f'Quarterly sales in 2021 for product 2: {sales_data_2021[1]}')

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 4
import numpy as np
# Simulated quarterly sales data for two products in 2021
sales_data_2021 = np.array([350, 420, 380, 410, 270, 320, 290, 310])
# Reshape the sales data to a 2D array using the appropriate method
sales_data_2021 = ___
print(f'Quarterly sales in 2021 for product 1: {sales_data_2021[0]}')
print(f'Quarterly sales in 2021 for product 2: {sales_data_2021[1]}')
toggle bottom row
some-alt