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
Ultimativ NumPy

Stryg for at vise menuen

book
Kopiering af Arrays

Ofte har du brug for at lave en kopi af en array for at foretage ændringer uden at påvirke den oprindelige array.

Enkel Tildeling

Først vil vi diskutere, hvorfor vi ikke blot kan oprette en anden variabel ved hjælp af 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.

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. Som et resultat vil enhver ændring 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 det nøgleprincip i kodning: Gentag dig ikke selv.

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, the copying procedure is exactly the same.

numpy.copy() Funktion

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

Både funktionen og metoden fungerer på samme måde; dog er der en nuance. De har begge parameteren order, som specificerer arrayets hukommelseslayout, men deres standardværdier er forskellige.

Billedet nedenfor viser strukturen af sales_data_2021 arrayet brugt i opgaven:

Opgave

Swipe to start coding

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

  1. Opret en kopi af sales_data_2021 ved hjælp af den passende metode for en NumPy-array og gem den i sales_data_2022.

  2. Opdater de sidste to elementer i den første række (der repræsenterer et produkts kvartalsvise salg) i sales_data_2022 til 390 og 370:

    • Brug en positiv indeks til at specificere rækken;
    • Brug en 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

Spørg AI

expand
ChatGPT

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

book
Kopiering af Arrays

Ofte har du brug for at lave en kopi af en array for at foretage ændringer uden at påvirke den oprindelige array.

Enkel Tildeling

Først vil vi diskutere, hvorfor vi ikke blot kan oprette en anden variabel ved hjælp af 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.

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. Som et resultat vil enhver ændring 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 det nøgleprincip i kodning: Gentag dig ikke selv.

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, the copying procedure is exactly the same.

numpy.copy() Funktion

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

Både funktionen og metoden fungerer på samme måde; dog er der en nuance. De har begge parameteren order, som specificerer arrayets hukommelseslayout, men deres standardværdier er forskellige.

Billedet nedenfor viser strukturen af sales_data_2021 arrayet brugt i opgaven:

Opgave

Swipe to start coding

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

  1. Opret en kopi af sales_data_2021 ved hjælp af den passende metode for en NumPy-array og gem den i sales_data_2022.

  2. Opdater de sidste to elementer i den første række (der repræsenterer et produkts kvartalsvise salg) i sales_data_2022 til 390 og 370:

    • Brug en positiv indeks til at specificere rækken;
    • Brug en 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
Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Vi beklager, at noget gik galt. Hvad skete der?
some-alt