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.
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.
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 iarray_2også påvirkearray_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.
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 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:
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.
-
Lag en kopi av
sales_data_2021ved å bruke den passende metoden for en NumPy-array og lagre den isales_data_2022. -
Oppdater de to siste elementene i første rad (som representerer et produkts kvartalsvise salg) i
sales_data_2022til 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
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 the np.copy() function in more detail?
What does the 'order' parameter do when copying arrays?
Can you show an example of copying a 2D array?
Awesome!
Completion rate improved to 3.7
Kopiere Matriser
Sveip for å vise menyen
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.
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.
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 iarray_2også påvirkearray_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.
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 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:
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.
-
Lag en kopi av
sales_data_2021ved å bruke den passende metoden for en NumPy-array og lagre den isales_data_2022. -
Oppdater de to siste elementene i første rad (som representerer et produkts kvartalsvise salg) i
sales_data_2022til 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
Takk for tilbakemeldingene dine!
single