Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Kopiering af Arrays | Almindeligt Anvendte NumPy-Funktioner
Ultimate NumPy

bookKopiering af Arrays

Ofte er det nødvendigt at oprette en kopi af et array for at foretage ændringer uden at påvirke det oprindelige array.

Simpel tildeling

Først gennemgår vi, hvorfor det ikke er tilstrækkeligt blot at oprette en ny variabel med array_2 = array_1, hvor array_1 er vores oprindelige array.

123456
import numpy as np array_1 = np.array([1, 2, 3]) array_2 = array_1 # Setting the first element of array_2 to 10 array_2[0] = 10 print(array_1)
copy

Vi ændrede værdien af det første element i array_2 til 10, men denne tildeling ændrede også værdien af det første element i array_1 til 10.

Note
Bemærk

Med array_2 = array_1 opretter du ikke et nyt array; i stedet opretter du en reference til det samme array i hukommelsen. Derfor vil alle ændringer foretaget på array_2 også påvirke array_1.

For at løse dette problem kunne vi skrive array_2 = np.array([1, 2, 3]), men det ville betyde at skrive den samme kode to gange. Husk hovedprincippet i kodning: Gentag dig ikke.

ndarray.copy() Metode

Heldigvis har NumPy en ndarray.copy() metode som en løsning på dette problem.

12345678
import numpy as np array_1 = np.array([1, 2, 3]) # Copying the contents of array_1 array_2 = array_1.copy() # Setting the first element of array_2 to 10 array_2[0] = 10 print(f'Initial array: {array_1}') print(f'Modified copy: {array_2}')
copy

Nu har vi oprettet et nyt array for array_2 med de samme elementer som array_1.

For 2D arrays, er kopieringsproceduren præcis den samme.

numpy.copy() Funktion

I stedet for .copy() metoden kan vi også bruge copy() funktionen, som tager arrayet som parameter: array_2 = np.copy(array_1).

Både funktionen og metoden fungerer ens; dog er der én nuance. Begge har parameteren order, som angiver arrayets hukommelseslayout, men deres standardværdier er forskellige.

Billedet nedenfor viser strukturen af sales_data_2021 arrayet, der bruges i opgaven:

Opgave

Swipe to start coding

Du analyserer kvartalsvise salgsdata for en virksomhed for året 2021. Dataene er gemt i et NumPy-array ved navn sales_data_2021, hvor hver række repræsenterer et specifikt produkt, og hver kolonne repræsenterer kvartalssalget for det pågældende produkt.

  1. Opret en kopi af sales_data_2021 ved hjælp af den relevante metode for et NumPy-array og gem den i sales_data_2022.
  2. Opdater de sidste to elementer i første række (der repræsenterer et produkts kvartalssalg) i sales_data_2022 til 390 og 370:
    • Brug et positivt indeks til at angive rækken;
    • Brug et slice med kun en negativ start-værdi til at indeksere de sidste to elementer.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 3
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

close

Awesome!

Completion rate improved to 3.7

bookKopiering af Arrays

Stryg for at vise menuen

Ofte er det nødvendigt at oprette en kopi af et array for at foretage ændringer uden at påvirke det oprindelige array.

Simpel tildeling

Først gennemgår vi, hvorfor det ikke er tilstrækkeligt blot at oprette en ny variabel med array_2 = array_1, hvor array_1 er vores oprindelige array.

123456
import numpy as np array_1 = np.array([1, 2, 3]) array_2 = array_1 # Setting the first element of array_2 to 10 array_2[0] = 10 print(array_1)
copy

Vi ændrede værdien af det første element i array_2 til 10, men denne tildeling ændrede også værdien af det første element i array_1 til 10.

Note
Bemærk

Med array_2 = array_1 opretter du ikke et nyt array; i stedet opretter du en reference til det samme array i hukommelsen. Derfor vil alle ændringer foretaget på array_2 også påvirke array_1.

For at løse dette problem kunne vi skrive array_2 = np.array([1, 2, 3]), men det ville betyde at skrive den samme kode to gange. Husk hovedprincippet i kodning: Gentag dig ikke.

ndarray.copy() Metode

Heldigvis har NumPy en ndarray.copy() metode som en løsning på dette problem.

12345678
import numpy as np array_1 = np.array([1, 2, 3]) # Copying the contents of array_1 array_2 = array_1.copy() # Setting the first element of array_2 to 10 array_2[0] = 10 print(f'Initial array: {array_1}') print(f'Modified copy: {array_2}')
copy

Nu har vi oprettet et nyt array for array_2 med de samme elementer som array_1.

For 2D arrays, er kopieringsproceduren præcis den samme.

numpy.copy() Funktion

I stedet for .copy() metoden kan vi også bruge copy() funktionen, som tager arrayet som parameter: array_2 = np.copy(array_1).

Både funktionen og metoden fungerer ens; dog er der én nuance. Begge har parameteren order, som angiver arrayets hukommelseslayout, men deres standardværdier er forskellige.

Billedet nedenfor viser strukturen af sales_data_2021 arrayet, der bruges i opgaven:

Opgave

Swipe to start coding

Du analyserer kvartalsvise salgsdata for en virksomhed for året 2021. Dataene er gemt i et NumPy-array ved navn sales_data_2021, hvor hver række repræsenterer et specifikt produkt, og hver kolonne repræsenterer kvartalssalget for det pågældende produkt.

  1. Opret en kopi af sales_data_2021 ved hjælp af den relevante metode for et NumPy-array og gem den i sales_data_2022.
  2. Opdater de sidste to elementer i første række (der repræsenterer et produkts kvartalssalg) i sales_data_2022 til 390 og 370:
    • Brug et positivt indeks til at angive rækken;
    • Brug et slice med kun en negativ start-værdi til at indeksere de sidste to elementer.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 3
single

single

some-alt