NumPy-Kopie und -Ansicht

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Tutorial lernen Sie die Konzepte von Kopie und Ansicht für ndarrays in der NumPy-Bibliothek. Sie werden lernen, wie Sie die copy()- und view()-Funktionen verwenden, um eine neue Kopie eines vorhandenen Arrays zu erstellen oder eine neue Ansicht für das Array zu erstellen. Sie werden auch den Unterschied zwischen Kopie und Ansicht lernen und wie sich diese unterschiedlich verhalten.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback ab, und wir werden das Problem für Sie prompt beheben.

Das Verständnis des Unterschieds zwischen Kopie und Ansicht

Der wichtigste Unterschied zwischen Kopie und Ansicht ist, dass die copy()-Funktion ein neues Array erstellt, während die view()-Funktion eine neue Ansicht des ursprünglichen Arrays erstellt. Wenn wir eine neue Kopie des Eingabearrays erstellen, wird sie an einem anderen Speicherort im Arbeitsspeicher gespeichert. Wenn wir jedoch eine Ansicht erstellen, verweist sie auf den gleichen Speicherort wie das ursprüngliche Array. Dies bedeutet, dass Änderungen, die an der Kopie des Eingabearrays vorgenommen werden, das ursprüngliche Array nicht beeinflussen und umgekehrt. Änderungen, die an der Ansicht vorgenommen werden, beeinflussen jedoch das ursprüngliche Array und umgekehrt.

Keine Kopie oder Array-Zuweisung

Wenn Sie ein NumPy-Array an ein anderes Array zuweisen, wird keine direkte Kopie des ursprünglichen Arrays erstellt. Stattdessen wird ein weiteres Array mit dem gleichen Inhalt und der gleichen ID erstellt, das eine Referenz auf das ursprüngliche Array wird. Wenn Sie Änderungen an diesem Referenzarray vornehmen, werden sie direkt im ursprünglichen Array widergespiegelt.

import numpy as np

input_arr = np.array([[5,2,7,4],[9,0,2,3],[1,2,3,19]])
print("Das ursprüngliche Array ist :\n")
print(input_arr)
print("\nDie ID des Arrays a:")
print(id(input_arr))

b = input_arr ## Zuweisen von input_arr an b
print("\nJetzt erstellen wir die Kopie von input_arr")
print("\nDie ID von b:")
print(id(b))
b.shape = 4, 3 ## Änderungen an b vornehmen
print("\nDie Änderungen an b werden auch auf a reflektiert:")
print(input_arr)

Numpy-Kopie oder Tiefkopie

Wenn wir eine Kopie mit der copy()-Funktion erstellen, spricht man auch von einer Tiefkopie. Die Kopie des Arrays besitzt die Daten, was bedeutet, dass Änderungen, die an der Kopie vorgenommen werden, das ursprüngliche Array nicht beeinflussen und umgekehrt.

Um eine Tiefkopie des Eingabearrays zu erstellen, können wir die numpy.ndarray.copy()-Funktion verwenden.

import numpy as np

## Erstellen Sie ein Array
a = np.array([5, 4, 6, 8, 9])

## Erstellen Sie die Kopie des Eingabearrays
c = a.copy()

## Überprüfen Sie jetzt die ID von a und c
print("Die ID des Eingabearrays a:")
print(id(a))
print("Die ID von c ist:")
print(id(c))

## Ändern Sie jetzt das ursprüngliche Array
a[0] = 25

## Drucken Sie sowohl das Eingabearray als auch die Kopie
print("Das ursprüngliche Array:")
print(a)
print("Die Kopie lautet:")
print(c)

Numpy-Ansicht oder flache Kopie

Wenn wir eine Ansicht eines Arrays erstellen, spricht man auch von einer flachen Kopie. Die Ansicht verweist lediglich auf das ursprüngliche Array und besitzt die Daten nicht. Dies bedeutet, dass Änderungen, die an der Ansicht vorgenommen werden, das ursprüngliche Array beeinflussen und umgekehrt.

Um eine Ansicht des Eingabearrays zu erstellen, können wir die numpy.ndarray.view()-Funktion verwenden.

import numpy as np

## Gegebenes Eingabearray
ar = np.array([2, 4, 6, 8, 10, 12])

## Erstellen der Ansicht
v = ar.view()

## Jetzt haben sowohl arr als auch v unterschiedliche IDs
print("Die ID von ar")
print(id(ar))
print("Die ID von v")
print(id(v))

## Änderungen am ursprünglichen Array beeinflussen auch die Ansicht
ar[3] = 16

## Drucken von Array und Ansicht
print("Das ursprüngliche Array:")
print(ar)
print("Die Ansicht:")
print(v)

Zusammenfassung

In diesem Tutorial haben Sie die Konzepte der Kopie und Ansicht für ndarrays in der NumPy-Bibliothek gelernt. Sie haben gelernt, wie Sie die copy()- und view()-Funktionen verwenden, um eine neue Kopie eines vorhandenen Arrays zu erstellen oder eine neue Ansicht für das Array zu erzeugen. Sie haben auch den Unterschied zwischen Kopie und Ansicht gelernt und wie sich diese unterschiedlich verhalten. Wir empfehlen, diese Konzepte mit zusätzlichen Beispielen zu üben.