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

Sveip for å vise menyen

book
Kopiere Matriser

Ofte trenger du å lage en kopi av en matrise for å gjøre endringer uten å påvirke den opprinnelige matrisen.

Enkel tildeling

Først skal vi diskutere hvorfor vi ikke bare kan lage en annen variabel ved å bruke array_2 = array_1, hvor array_1 er vår opprinnelige matrise.

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 endret verdien til det første elementet i array_2 til 10, men denne tildelingen endret også verdien til det første elementet i array_1 til 10.

Merk

Med array_2 = array_1, oppretter du ikke en ny array; i stedet oppretter du en referanse til den samme arrayen i minnet. Som et resultat vil alle endringer gjort i array_2 også påvirke array_1.

For å løse dette problemet, kunne vi skrive array_2 = np.array([1, 2, 3]), men det ville bety å skrive den samme koden to ganger. Husk nøkkelprinsippet i koding: Ikke gjenta deg selv.

ndarray.copy() Metode

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

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

Nå har vi opprettet en ny array for array_2 med de samme elementene som array_1.

For 2D-arrayer er kopieringsprosedyren nøyaktig den samme.

numpy.copy() Funksjon

I stedet for .copy() metoden, kan vi også bruke copy() funksjonen, som tar arrayen som sin parameter: array_2 = np.copy(array_1).

Både funksjonen og metoden fungerer likt; det er imidlertid en nyanse. De har begge order-parameteren, som spesifiserer minneoppsettet til arrayen, men deres standardverdier er forskjellige.

Bildet nedenfor viser strukturen til sales_data_2021-arrayen brukt i oppgaven:

Oppgave

Swipe to start coding

Du analyserer kvartalsvise salgsdata for et selskap for året 2021. Dataene er lagret i en NumPy-array kalt sales_data_2021, hvor hver rad representerer et spesifikt produkt, og hver kolonne representerer kvartalsvise salg for det produktet.

  1. Lag en kopi av sales_data_2021 ved å bruke den passende metoden for en NumPy-array og lagre den i sales_data_2022.

  2. Oppdater de to siste elementene i første rad (som representerer et produkts kvartalsvise salg) i sales_data_2022 til 390 og 370:

    • Bruk en positiv indeks for å spesifisere raden;
    • Bruk en slice med kun en negativ start-verdi for å indeksere de to siste elementene.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 3

Spør AI

expand
ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

book
Kopiere Matriser

Ofte trenger du å lage en kopi av en matrise for å gjøre endringer uten å påvirke den opprinnelige matrisen.

Enkel tildeling

Først skal vi diskutere hvorfor vi ikke bare kan lage en annen variabel ved å bruke array_2 = array_1, hvor array_1 er vår opprinnelige matrise.

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 endret verdien til det første elementet i array_2 til 10, men denne tildelingen endret også verdien til det første elementet i array_1 til 10.

Merk

Med array_2 = array_1, oppretter du ikke en ny array; i stedet oppretter du en referanse til den samme arrayen i minnet. Som et resultat vil alle endringer gjort i array_2 også påvirke array_1.

For å løse dette problemet, kunne vi skrive array_2 = np.array([1, 2, 3]), men det ville bety å skrive den samme koden to ganger. Husk nøkkelprinsippet i koding: Ikke gjenta deg selv.

ndarray.copy() Metode

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

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

Nå har vi opprettet en ny array for array_2 med de samme elementene som array_1.

For 2D-arrayer er kopieringsprosedyren nøyaktig den samme.

numpy.copy() Funksjon

I stedet for .copy() metoden, kan vi også bruke copy() funksjonen, som tar arrayen som sin parameter: array_2 = np.copy(array_1).

Både funksjonen og metoden fungerer likt; det er imidlertid en nyanse. De har begge order-parameteren, som spesifiserer minneoppsettet til arrayen, men deres standardverdier er forskjellige.

Bildet nedenfor viser strukturen til sales_data_2021-arrayen brukt i oppgaven:

Oppgave

Swipe to start coding

Du analyserer kvartalsvise salgsdata for et selskap for året 2021. Dataene er lagret i en NumPy-array kalt sales_data_2021, hvor hver rad representerer et spesifikt produkt, og hver kolonne representerer kvartalsvise salg for det produktet.

  1. Lag en kopi av sales_data_2021 ved å bruke den passende metoden for en NumPy-array og lagre den i sales_data_2022.

  2. Oppdater de to siste elementene i første rad (som representerer et produkts kvartalsvise salg) i sales_data_2022 til 390 og 370:

    • Bruk en positiv indeks for å spesifisere raden;
    • Bruk en slice med kun en negativ start-verdi for å indeksere de to siste elementene.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 3
Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Vi beklager at noe gikk galt. Hva skjedde?
some-alt