Grundlagen der NumPy-Array-Manipulation

NumPyNumPyBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

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

Einführung

In diesem Lab lernst du die Grundlagen der Arbeit mit NumPy-Arrays. NumPy ist eine leistungsstarke Bibliothek für numerische Berechnungen in Python. Es bietet effiziente Datenstrukturen und Funktionen zum Ausführen von mathematischen Operationen auf Arrays.

Hinweis: Du kannst im 06-copies-and-views.ipynb Code schreiben. Einige Druckoperationen werden in den Schritten weggelassen, und du kannst die Ausgabe nach Bedarf drucken.

Kopien und Ansichten verstehen

NumPy-Arrays bestehen aus zwei Teilen: dem Datenpuffer und den Metadaten. Der Datenpuffer enthält die tatsächlichen Datenelemente, während die Metadaten Informationen wie Datentyp und Schritte umfassen.

Wenn Sie mit NumPy-Arrays arbeiten, ist es wichtig, den Unterschied zwischen Kopien und Ansichten zu verstehen:

  • Eine Ansicht ermöglicht es Ihnen, das Array unterschiedlich zuzugreifen, indem Sie bestimmte Metadaten ändern, ohne den Datenpuffer zu verändern. Alle Änderungen, die an einer Ansicht vorgenommen werden, werden im ursprünglichen Array widergespiegelt.

  • Eine Kopie ist ein neues Array, das sowohl den Datenpuffer als auch die Metadaten dupliziert. Änderungen, die an einer Kopie vorgenommen werden, werden das ursprüngliche Array nicht beeinflussen.

Ansichten erstellen

Ansichten können erstellt werden, indem bestimmte Metadaten eines Arrays geändert werden. Dadurch wird eine neue Art der Betrachtung der Daten erzeugt, ohne dass diese kopiert werden. Um eine Ansicht zu erstellen, können Sie die view()-Methode des ndarray-Objekts verwenden.

import numpy as np

## Erstellen eines Arrays
x = np.array([1, 2, 3, 4, 5])

## Erstellen einer Ansicht
y = x.view()

## Ändern der Ansicht
y[0] = 10

## Ausgabe des ursprünglichen Arrays
print(x)  ## Ausgabe: [10, 2, 3, 4, 5]

Im obigen Beispiel ermöglicht die Ansicht y uns, das ursprüngliche Array x zu ändern.

Kopien erstellen

Kopien können erstellt werden, indem sowohl der Datenpuffer als auch die Metadaten eines Arrays dupliziert werden. Um eine Kopie zu erstellen, können Sie die copy()-Methode des ndarray-Objekts verwenden.

import numpy as np

## Erstellen eines Arrays
x = np.array([1, 2, 3, 4, 5])

## Erstellen einer Kopie
y = x.copy()

## Ändern der Kopie
y[0] = 10

## Ausgabe des ursprünglichen Arrays
print(x)  ## Ausgabe: [1, 2, 3, 4, 5]

Im obigen Beispiel ist die Kopie y unabhängig vom ursprünglichen Array x.

Indexierungsoperationen

Indexierungsoperationen in NumPy können entweder Ansichten oder Kopien erzeugen, je nachdem, um welche Art der Indexierung es sich handelt.

  • Die einfache Indexierung erzeugt immer Ansichten. Beispielsweise:
import numpy as np

## Erstellen eines Arrays
x = np.arange(10)

## Erstellen einer Ansicht
y = x[1:3]

## Ändern der Ansicht
y[0] = 10

## Ausgabe des ursprünglichen Arrays
print(x)  ## Ausgabe: [0, 10, 2, 3, 4, 5, 6, 7, 8, 9]

Im obigen Beispiel spiegelt die Ansicht y die Änderungen wider, die am ursprünglichen Array x vorgenommen wurden.

  • Die fortgeschrittene Indexierung erzeugt immer Kopien. Beispielsweise:
import numpy as np

## Erstellen eines Arrays
x = np.arange(9).reshape(3, 3)

## Erstellen einer Kopie
y = x[[1, 2]]

## Ändern des ursprünglichen Arrays
x[[1, 2]] = [[10, 11, 12], [13, 14, 15]]

## Ausgabe der Kopie
print(y)  ## Ausgabe: [[3, 4, 5], [6, 7, 8]]

Im obigen Beispiel bleibt die Kopie y unverändert, nachdem das ursprüngliche Array x geändert wurde.

Weitere Operationen

Es gibt weitere Operationen in NumPy, die Ansichten oder Kopien erzeugen können.

  • Die reshape()-Funktion erzeugt, soweit möglich, eine Ansicht, andernfalls eine Kopie. Beispielsweise:
import numpy as np

## Erstellen eines Arrays
x = np.ones((2, 3))

## Transponieren des Arrays
y = x.T

## Versuch, das Array umzuformen
try:
    y.shape = 6
except AttributeError:
    print("Incompatible shape for in-place modification. Use `.reshape()` to make a copy with the desired shape.")

Im obigen Beispiel wird das Array y nach der Transposition nicht mehr zusammenhängend, sodass seine Umformung eine Kopie erfordert.

  • Die ravel()-Funktion gibt, soweit möglich, eine zusammenhängende abgeflachte Ansicht des Arrays zurück. Dagegen gibt die flatten()-Methode immer eine abgeflachte Kopie des Arrays zurück. Beispielsweise:
import numpy as np

## Erstellen eines Arrays
x = np.arange(9).reshape(3, 3)

## Erstellen einer abgeflachten Ansicht
y = x.ravel()

## Erstellen einer abgeflachten Kopie
z = x.flatten()

## Ausgabe des ursprünglichen Arrays
print(x)  ## Ausgabe: [[0, 1, 2], [3, 4, 5], [6, 7, 8]]

Im obigen Beispiel ist y eine Ansicht, während z eine Kopie ist.

Bestimmen, ob ein Array eine Ansicht oder eine Kopie ist

Sie können das base-Attribut des ndarray-Objekts verwenden, um zu bestimmen, ob ein Array eine Ansicht oder eine Kopie ist. Das base-Attribut gibt das ursprüngliche Array für eine Ansicht zurück und None für eine Kopie. Beispielsweise:

import numpy as np

## Erstellen eines Arrays
x = np.arange(9)

## Erstellen einer Ansicht
y = x.reshape(3, 3)

## Erstellen einer Kopie
z = y[[2, 1]]

## Überprüfen, ob y eine Ansicht ist
print(y.base)  ## Ausgabe: [0, 1, 2, 3, 4, 5, 6, 7, 8]

## Überprüfen, ob z eine Kopie ist
print(z.base is None)  ## Ausgabe: True

Im obigen Beispiel ist y eine Ansicht und z eine Kopie.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen der Arbeit mit NumPy-Arrays gelernt. Sie haben über Kopien und Ansichten sowie deren Erstellung gelernt. Sie haben auch über Indexierungsoperationen und andere Operationen gelernt, die Ansichten oder Kopien erzeugen können. Schließlich haben Sie gelernt, wie Sie mithilfe des base-Attributs bestimmen können, ob ein Array eine Ansicht oder eine Kopie ist.

Indem Sie diese Konzepte verstehen und die entsprechenden Methoden anwenden, können Sie Daten effizient mit NumPy manipulieren und analysieren.