single
Kopiera Arrayer
Svep för att visa menyn
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 diskuteras varför du inte bara kan skapa en annan variabel med array_2 = array_1, där array_1 är din ursprungliga array.
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)
Du ä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.
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 skulle du kunna skriva array_2 = np.array([1, 2, 3]), men det skulle innebära att samma kod skrivs två gånger. Kom ihåg den grundläggande principen inom programmering: Upprepa dig inte.
ndarray.copy()-metoden
Som tur är har NumPy en ndarray.copy()-metod som löser detta problem.
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}')
Nu har du skapat en ny array för array_2 med samma element som array_1.
För 2D-arrayer är kopieringsproceduren exakt densamma.
numpy.copy()-funktionen
Istället för .copy()-metoden kan du också använda copy()-funktionen, som tar arrayen som parameter: array_2 = np.copy(array_1).
Både funktionen och metoden fungerar likadant; dock finns det en nyans. Båda har parametern order, som anger minneslayouten för arrayen, men deras standardvärden skiljer sig åt.
Bilden nedan visar strukturen för arrayen sales_data_2021 som används i uppgiften:
Svep för att börja koda
Du analyserar kvartalsförsäljningsdata för ett företag för året 2021. Datan är lagrad 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.
- Skapa en kopia av
sales_data_2021med hjälp av den lämpliga metoden för en NumPy-array och spara den isales_data_2022. - Uppdatera de två sista elementen i första raden (som representerar en produkts kvartalsförsäljning) i
sales_data_2022till390och370:- 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
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal