Kursinhalt
Ultimatives Numpy
Ultimatives Numpy
Arrays Kopieren
Oftmals müssen Sie eine Kopie eines Arrays erstellen, um Änderungen vorzunehmen, ohne das ursprüngliche Array zu beeinflussen.
Einfache Zuweisung
Zuerst besprechen wir, warum wir nicht einfach eine andere Variable mit array_2 = array_1
erstellen können, wobei array_1
unser ursprüngliches Array ist.
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)
Wir haben den Wert des ersten Elements von array_2
auf 10
geändert, aber diese Zuweisung hat auch den Wert des ersten Elements von array_1
auf 10
geändert.
Hinweis
Mit
array_2 = array_1
erstellen Sie kein neues Array; stattdessen erstellen Sie eine Referenz auf dasselbe Array im Speicher. Daher wirken sich alle Änderungen, die anarray_2
vorgenommen werden, auch aufarray_1
aus.
Um dieses Problem zu lösen, könnten wir array_2 = np.array([1, 2, 3])
schreiben, aber das würde bedeuten, denselben Code zweimal zu schreiben. Denken Sie an das Schlüsselprinzip beim Programmieren: Wiederholen Sie sich nicht.
ndarray.copy() Methode
Glücklicherweise hat NumPy eine ndarray.copy()
Methode als Lösung für dieses 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}')
Nun haben wir ein neues Array für array_2
mit den gleichen Elementen wie array_1
erstellt.
Für 2D-Arrays ist das Kopierverfahren genau dasselbe.
numpy.copy() Funktion
Anstelle der .copy()
Methode können wir auch die copy()
Funktion verwenden, die das Array als Parameter nimmt: array_2 = np.copy(array_1)
.
Sowohl die Funktion als auch die Methode funktionieren gleich; jedoch gibt es eine Nuance. Beide haben den order
Parameter, der das Speicherlayout des Arrays angibt, aber ihre Standardwerte sind unterschiedlich.
Das Bild unten zeigt die Struktur des sales_data_2021
Arrays, das in der Aufgabe verwendet wird:
Swipe to start coding
Sie analysieren die quartalsweisen Verkaufsdaten eines Unternehmens für das Jahr 2021. Die Daten sind in einem NumPy-Array namens sales_data_2021
gespeichert, wobei jede Zeile ein bestimmtes Produkt darstellt und jede Spalte die quartalsweisen Verkäufe für dieses Produkt repräsentiert.
-
Erstellen Sie eine Kopie von
sales_data_2021
mit der entsprechenden Methode eines NumPy-Arrays und speichern Sie sie insales_data_2022
. -
Aktualisieren Sie die letzten beiden Elemente der ersten Zeile (die die quartalsweisen Verkäufe eines Produkts darstellt) in
sales_data_2022
auf 390 und 370:- Verwenden Sie einen positiven Index, um die Zeile anzugeben;
- Verwenden Sie einen Slice mit nur einem negativen
Start
-Wert, um die letzten beiden Elemente zu indexieren.
Lösung
Danke für Ihr Feedback!
Arrays Kopieren
Oftmals müssen Sie eine Kopie eines Arrays erstellen, um Änderungen vorzunehmen, ohne das ursprüngliche Array zu beeinflussen.
Einfache Zuweisung
Zuerst besprechen wir, warum wir nicht einfach eine andere Variable mit array_2 = array_1
erstellen können, wobei array_1
unser ursprüngliches Array ist.
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)
Wir haben den Wert des ersten Elements von array_2
auf 10
geändert, aber diese Zuweisung hat auch den Wert des ersten Elements von array_1
auf 10
geändert.
Hinweis
Mit
array_2 = array_1
erstellen Sie kein neues Array; stattdessen erstellen Sie eine Referenz auf dasselbe Array im Speicher. Daher wirken sich alle Änderungen, die anarray_2
vorgenommen werden, auch aufarray_1
aus.
Um dieses Problem zu lösen, könnten wir array_2 = np.array([1, 2, 3])
schreiben, aber das würde bedeuten, denselben Code zweimal zu schreiben. Denken Sie an das Schlüsselprinzip beim Programmieren: Wiederholen Sie sich nicht.
ndarray.copy() Methode
Glücklicherweise hat NumPy eine ndarray.copy()
Methode als Lösung für dieses 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}')
Nun haben wir ein neues Array für array_2
mit den gleichen Elementen wie array_1
erstellt.
Für 2D-Arrays ist das Kopierverfahren genau dasselbe.
numpy.copy() Funktion
Anstelle der .copy()
Methode können wir auch die copy()
Funktion verwenden, die das Array als Parameter nimmt: array_2 = np.copy(array_1)
.
Sowohl die Funktion als auch die Methode funktionieren gleich; jedoch gibt es eine Nuance. Beide haben den order
Parameter, der das Speicherlayout des Arrays angibt, aber ihre Standardwerte sind unterschiedlich.
Das Bild unten zeigt die Struktur des sales_data_2021
Arrays, das in der Aufgabe verwendet wird:
Swipe to start coding
Sie analysieren die quartalsweisen Verkaufsdaten eines Unternehmens für das Jahr 2021. Die Daten sind in einem NumPy-Array namens sales_data_2021
gespeichert, wobei jede Zeile ein bestimmtes Produkt darstellt und jede Spalte die quartalsweisen Verkäufe für dieses Produkt repräsentiert.
-
Erstellen Sie eine Kopie von
sales_data_2021
mit der entsprechenden Methode eines NumPy-Arrays und speichern Sie sie insales_data_2022
. -
Aktualisieren Sie die letzten beiden Elemente der ersten Zeile (die die quartalsweisen Verkäufe eines Produkts darstellt) in
sales_data_2022
auf 390 und 370:- Verwenden Sie einen positiven Index, um die Zeile anzugeben;
- Verwenden Sie einen Slice mit nur einem negativen
Start
-Wert, um die letzten beiden Elemente zu indexieren.
Lösung
Danke für Ihr Feedback!