Kopiering av Matriser
Ofte er det nødvendig å 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 opprette en ny variabel med array_2 = array_1, der array_1 er vår opprinnelige matrise.
123456import 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)
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.
Med array_2 = array_1 oppretter du ikke et nytt array; du oppretter en referanse til det samme arrayet i minnet. Derfor vil alle endringer gjort på array_2 også påvirke array_1.
For å løse dette problemet kunne vi skrevet array_2 = np.array([1, 2, 3]), men det ville bety å skrive den samme koden to ganger. Husk hovedprinsippet i koding: Ikke gjenta deg selv.
ndarray.copy()-metode
Heldigvis har NumPy en ndarray.copy()-metode som løser dette problemet.
12345678import 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}')
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 arrayet som parameter: array_2 = np.copy(array_1).
Både funksjonen og metoden fungerer likt; det er imidlertid én nyanse. Begge har parameteren order, som spesifiserer minnelayouten til arrayet, men standardverdiene deres er forskjellige.
Bildet under viser strukturen til sales_data_2021-arrayet brukt i oppgaven:
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, der hver rad representerer et spesifikt produkt, og hver kolonne representerer kvartalssalget for det produktet.
- Lag en kopi av
sales_data_2021ved å bruke riktig metode for en NumPy-array og lagre den isales_data_2022. - Oppdater de to siste elementene i første rad (som representerer et produkts kvartalssalg) i
sales_data_2022til390og370:- Bruk en positiv indeks for å spesifisere raden;
- Bruk et utsnitt med kun en negativ
start-verdi for å indeksere de to siste elementene.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 3.7
Kopiering av Matriser
Sveip for å vise menyen
Ofte er det nødvendig å 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 opprette en ny variabel med array_2 = array_1, der array_1 er vår opprinnelige matrise.
123456import 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)
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.
Med array_2 = array_1 oppretter du ikke et nytt array; du oppretter en referanse til det samme arrayet i minnet. Derfor vil alle endringer gjort på array_2 også påvirke array_1.
For å løse dette problemet kunne vi skrevet array_2 = np.array([1, 2, 3]), men det ville bety å skrive den samme koden to ganger. Husk hovedprinsippet i koding: Ikke gjenta deg selv.
ndarray.copy()-metode
Heldigvis har NumPy en ndarray.copy()-metode som løser dette problemet.
12345678import 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}')
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 arrayet som parameter: array_2 = np.copy(array_1).
Både funksjonen og metoden fungerer likt; det er imidlertid én nyanse. Begge har parameteren order, som spesifiserer minnelayouten til arrayet, men standardverdiene deres er forskjellige.
Bildet under viser strukturen til sales_data_2021-arrayet brukt i oppgaven:
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, der hver rad representerer et spesifikt produkt, og hver kolonne representerer kvartalssalget for det produktet.
- Lag en kopi av
sales_data_2021ved å bruke riktig metode for en NumPy-array og lagre den isales_data_2022. - Oppdater de to siste elementene i første rad (som representerer et produkts kvartalssalg) i
sales_data_2022til390og370:- Bruk en positiv indeks for å spesifisere raden;
- Bruk et utsnitt med kun en negativ
start-verdi for å indeksere de to siste elementene.
Løsning
Takk for tilbakemeldingene dine!
single