Kopiera Arrayer
Ofta behöver du skapa en kopia av en array för att göra ändringar utan att påverka den ursprungliga arrayen.
Enkel Tilldelning
Först kommer vi att diskutera varför vi inte bara kan skapa en annan variabel med array_2 = array_1
, där array_1
är vår ursprungliga array.
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)
Vi ändrade värdet på det första elementet i array_2
till 10
, men denna tilldelning ändrade också värdet på det första elementet i array_1
till 10
.
Notera
Med
array_2 = array_1
, skapar du inte en ny array; istället skapar du en referens till samma array i minnet. Som ett resultat kommer alla ändringar som görs iarray_2
också att påverkaarray_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 viktiga principen i kodning: Upprepa dig inte.
ndarray.copy() Metod
Lyckligtvis har NumPy en ndarray.copy()
metod som en lösning på detta problem.
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}')
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 sin parameter: array_2 = np.copy(array_1)
.
Både funktionen och metoden fungerar likadant; dock finns det en nyans. De har båda parametern order
, som specificerar arrayens minneslayout, men deras standardvärden är olika.
Bilden nedan visar strukturen av sales_data_2021
arrayen som används i uppgiften:
Swipe to start coding
Du analyserar kvartalsförsäljningsdata för ett företag för år 2021. Data lagras i en NumPy-array som heter sales_data_2021
, där varje rad representerar en specifik produkt, och varje kolumn representerar kvartalsförsäljningen för den produkten.
-
Skapa en kopia av
sales_data_2021
med hjälp av den lämpliga metoden för en NumPy-array och lagra den isales_data_2022
. -
Uppdatera de sista två elementen i den 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 skiva med endast ett negativt
start
-värde för att indexera de sista två elementen.
Lösning
Tack för dina kommentarer!