Arrays Kopiëren
Vaak moet je een kopie van een array maken om wijzigingen aan te brengen zonder de originele array te beïnvloeden.
Eenvoudige Toewijzing
Eerst bespreken we waarom we niet eenvoudigweg een andere variabele kunnen maken met array_2 = array_1
, waarbij array_1
onze originele array is.
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)
We hebben de waarde van het eerste element van array_2
veranderd naar 10
, maar deze toewijzing veranderde ook de waarde van het eerste element van array_1
naar 10
.
Opmerking
Met
array_2 = array_1
, creëer je geen nieuwe array; in plaats daarvan creëer je een referentie naar dezelfde array in het geheugen. Als gevolg daarvan zullen alle wijzigingen die inarray_2
worden aangebracht, ookarray_1
beïnvloeden.
Om dit probleem op te lossen, zouden we array_2 = np.array([1, 2, 3])
kunnen schrijven, maar dat zou betekenen dat we dezelfde code tweemaal schrijven. Onthoud het sleutelprincipe in coderen: Herhaal jezelf niet.
ndarray.copy() Methode
Gelukkig heeft NumPy een ndarray.copy()
methode als oplossing voor dit probleem.
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 hebben we een nieuwe array voor array_2
gemaakt met dezelfde elementen als array_1
.
Voor 2D arrays is de kopieerprocedure precies hetzelfde.
numpy.copy() Functie
In plaats van de .copy()
methode, kunnen we ook de copy()
functie gebruiken, die de array als parameter neemt: array_2 = np.copy(array_1)
.
Zowel de functie als de methode werken hetzelfde; er is echter één nuance. Ze hebben beide de order
parameter, die de geheugenindeling van de array specificeert, maar hun standaardwaarden zijn verschillend.
De onderstaande afbeelding toont de structuur van de sales_data_2021
array die in de taak wordt gebruikt:
Swipe to start coding
Je analyseert de kwartaalverkoopgegevens van een bedrijf voor het jaar 2021. De gegevens zijn opgeslagen in een NumPy-array genaamd sales_data_2021
, waarbij elke rij een specifiek product vertegenwoordigt en elke kolom de kwartaalverkoop voor dat product vertegenwoordigt.
-
Maak een kopie van
sales_data_2021
met behulp van de juiste methode van een NumPy-array en sla deze op insales_data_2022
. -
Werk de laatste twee elementen van de eerste rij (die de kwartaalverkoop van een product vertegenwoordigt) in
sales_data_2022
bij naar 390 en 370:- Gebruik een positieve index om de rij te specificeren;
- Gebruik een slice met alleen een negatieve
start
waarde om de laatste twee elementen te indexeren.
Oplossing
Bedankt voor je feedback!