Kopiera 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.
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 ä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.
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.
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 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:
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.
- Skapa en kopia av
sales_data_2021med hjälp av den lämpliga metoden för en NumPy-array och lagra 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
Awesome!
Completion rate improved to 3.7
Kopiera 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.
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 ä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.
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.
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 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:
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.
- Skapa en kopia av
sales_data_2021med hjälp av den lämpliga metoden för en NumPy-array och lagra 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