Kopieren von Arrays
Oft ist es notwendig, eine Kopie eines Arrays zu erstellen, um Änderungen vorzunehmen, ohne das Originalarray zu beeinflussen.
Einfache Zuweisung
Zunächst wird erläutert, warum nicht einfach eine weitere Variable mit array_2 = array_1 erstellt werden kann, wobei array_1 das Originalarray ist.
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)
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.
Mit array_2 = array_1 wird kein neues Array erstellt; stattdessen wird eine Referenz auf dasselbe Array im Speicher erzeugt. Daher wirken sich alle Änderungen an array_2 auch auf array_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. Merke dir das wichtigste Prinzip beim Programmieren: Don't repeat yourself.
Methode ndarray.copy()
Glücklicherweise bietet NumPy mit der Methode ndarray.copy() eine Lösung für dieses 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}')
Nun wurde ein neues Array für array_2 erstellt, das die gleichen Elemente wie array_1 enthält.
Für 2D-Arrays ist das Kopierverfahren exakt dasselbe.
numpy.copy()-Funktion
Anstelle der .copy()-Methode kann auch die copy()-Funktion verwendet werden, die das Array als Parameter übernimmt: array_2 = np.copy(array_1).
Sowohl die Funktion als auch die Methode arbeiten identisch; es gibt jedoch eine Nuance. Beide verfügen über den Parameter order, der das Speicherlayout des Arrays bestimmt, jedoch sind deren Standardwerte unterschiedlich.
Die folgende Abbildung zeigt die Struktur des in der Aufgabe verwendeten Arrays sales_data_2021:
Swipe to start coding
Sie analysieren die Quartalsumsatzzahlen 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 und jede Spalte die Quartalsumsätze dieses Produkts darstellt.
- Erstellen Sie eine Kopie von
sales_data_2021mit der entsprechenden Methode eines NumPy-Arrays und speichern Sie diese insales_data_2022. - Aktualisieren Sie die letzten beiden Elemente der ersten Zeile (die die Quartalsumsätze eines Produkts repräsentiert) in
sales_data_2022auf390und370:- 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 indizieren.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 3.7
Kopieren von Arrays
Swipe um das Menü anzuzeigen
Oft ist es notwendig, eine Kopie eines Arrays zu erstellen, um Änderungen vorzunehmen, ohne das Originalarray zu beeinflussen.
Einfache Zuweisung
Zunächst wird erläutert, warum nicht einfach eine weitere Variable mit array_2 = array_1 erstellt werden kann, wobei array_1 das Originalarray ist.
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)
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.
Mit array_2 = array_1 wird kein neues Array erstellt; stattdessen wird eine Referenz auf dasselbe Array im Speicher erzeugt. Daher wirken sich alle Änderungen an array_2 auch auf array_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. Merke dir das wichtigste Prinzip beim Programmieren: Don't repeat yourself.
Methode ndarray.copy()
Glücklicherweise bietet NumPy mit der Methode ndarray.copy() eine Lösung für dieses 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}')
Nun wurde ein neues Array für array_2 erstellt, das die gleichen Elemente wie array_1 enthält.
Für 2D-Arrays ist das Kopierverfahren exakt dasselbe.
numpy.copy()-Funktion
Anstelle der .copy()-Methode kann auch die copy()-Funktion verwendet werden, die das Array als Parameter übernimmt: array_2 = np.copy(array_1).
Sowohl die Funktion als auch die Methode arbeiten identisch; es gibt jedoch eine Nuance. Beide verfügen über den Parameter order, der das Speicherlayout des Arrays bestimmt, jedoch sind deren Standardwerte unterschiedlich.
Die folgende Abbildung zeigt die Struktur des in der Aufgabe verwendeten Arrays sales_data_2021:
Swipe to start coding
Sie analysieren die Quartalsumsatzzahlen 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 und jede Spalte die Quartalsumsätze dieses Produkts darstellt.
- Erstellen Sie eine Kopie von
sales_data_2021mit der entsprechenden Methode eines NumPy-Arrays und speichern Sie diese insales_data_2022. - Aktualisieren Sie die letzten beiden Elemente der ersten Zeile (die die Quartalsumsätze eines Produkts repräsentiert) in
sales_data_2022auf390und370:- 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 indizieren.
Lösung
Danke für Ihr Feedback!
single