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
Can you explain the difference between the .copy() method and np.copy() function in more detail?
What does the 'order' parameter do when copying arrays?
Can you show how to copy a 2D array using these methods?
Fantastisk!
Completion rate forbedret til 3.85
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