Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Kopiera Arrayer | Vanligt Använda NumPy-Funktioner
Ultimata NumPy

bookKopiera Arrayer

Ofta behöver du skapa en kopia av en array för att kunna göra ändringar utan att påverka originalarrayen.

Enkel tilldelning

Först diskuterar vi varför vi inte bara kan skapa en annan variabel med array_2 = array_1, där array_1 är vår originalarray.

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 ändrade värdet på det första elementet i array_2 till 10, men denna tilldelning ändrade även värdet på det första elementet i array_1 till 10.

Note
Observera

Med array_2 = array_1 skapar du inte en ny array; istället skapar du en referens till samma array i minnet. Därför kommer alla ändringar som görs i array_2 även att påverka array_1.

För att lösa detta problem kan vi skriva array_2 = np.array([1, 2, 3]), men det skulle innebära att skriva samma kod två gånger. Kom ihåg den grundläggande principen inom programmering: Upprepa dig inte.

ndarray.copy()-metod

Lyckligtvis har NumPy en ndarray.copy()-metod som en lösning på detta 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 skapat en ny array för array_2 med samma element som array_1.

För 2D-arrayer är kopieringsproceduren exakt densamma.

numpy.copy()-funktion

Istället för .copy()-metoden kan vi också använda copy()-funktionen, som tar arrayen som parameter: array_2 = np.copy(array_1).

Både funktionen och metoden fungerar på samma sätt; dock finns det en nyans. Båda har parametern order, som specificerar minneslayouten för arrayen, men deras standardvärden är olika.

Bilden nedan visar strukturen för arrayen sales_data_2021 som används i uppgiften:

Uppgift

Swipe to start coding

Du analyserar kvartalsvisa försäljningsdata för ett företag för året 2021. Datan lagras i en NumPy-array med namnet sales_data_2021, där varje rad representerar en specifik produkt och varje kolumn representerar kvartalsförsäljningen för den produkten.

  1. Skapa en kopia av sales_data_2021 med hjälp av den lämpliga metoden för en NumPy-array och lagra den i sales_data_2022.
  2. Uppdatera de två sista elementen i första raden (som representerar en produkts kvartalsförsäljning) i sales_data_2022 till 390 och 370:
    • Använd ett positivt index för att specificera raden;
    • Använd en slice med endast ett negativt start-värde för att indexera de två sista elementen.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 3
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

close

Awesome!

Completion rate improved to 3.7

bookKopiera Arrayer

Svep för att visa menyn

Ofta behöver du skapa en kopia av en array för att kunna göra ändringar utan att påverka originalarrayen.

Enkel tilldelning

Först diskuterar vi varför vi inte bara kan skapa en annan variabel med array_2 = array_1, där array_1 är vår originalarray.

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 ändrade värdet på det första elementet i array_2 till 10, men denna tilldelning ändrade även värdet på det första elementet i array_1 till 10.

Note
Observera

Med array_2 = array_1 skapar du inte en ny array; istället skapar du en referens till samma array i minnet. Därför kommer alla ändringar som görs i array_2 även att påverka array_1.

För att lösa detta problem kan vi skriva array_2 = np.array([1, 2, 3]), men det skulle innebära att skriva samma kod två gånger. Kom ihåg den grundläggande principen inom programmering: Upprepa dig inte.

ndarray.copy()-metod

Lyckligtvis har NumPy en ndarray.copy()-metod som en lösning på detta 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 skapat en ny array för array_2 med samma element som array_1.

För 2D-arrayer är kopieringsproceduren exakt densamma.

numpy.copy()-funktion

Istället för .copy()-metoden kan vi också använda copy()-funktionen, som tar arrayen som parameter: array_2 = np.copy(array_1).

Både funktionen och metoden fungerar på samma sätt; dock finns det en nyans. Båda har parametern order, som specificerar minneslayouten för arrayen, men deras standardvärden är olika.

Bilden nedan visar strukturen för arrayen sales_data_2021 som används i uppgiften:

Uppgift

Swipe to start coding

Du analyserar kvartalsvisa försäljningsdata för ett företag för året 2021. Datan lagras i en NumPy-array med namnet sales_data_2021, där varje rad representerar en specifik produkt och varje kolumn representerar kvartalsförsäljningen för den produkten.

  1. Skapa en kopia av sales_data_2021 med hjälp av den lämpliga metoden för en NumPy-array och lagra den i sales_data_2022.
  2. Uppdatera de två sista elementen i första raden (som representerar en produkts kvartalsförsäljning) i sales_data_2022 till 390 och 370:
    • Använd ett positivt index för att specificera raden;
    • Använd en slice med endast ett negativt start-värde för att indexera de två sista elementen.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 3
single

single

some-alt