Strukturierte Arrays in NumPy

PythonPythonBeginner
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 werden wir uns mit strukturierten Arrays in NumPy beschäftigen. Strukturierte Arrays sind ndarrays, deren Datentyp eine Zusammensetzung von einfachereren Datentypen ist, die als Folge von benannten Feldern organisiert sind. Sie eignen sich für die Arbeit mit strukturierten Daten, wie tabellarischen Daten, wobei jedes Feld ein unterschiedliches Attribut der Daten darstellt.

Hinweis: Sie können im 07-structured-arrays.ipynb Code schreiben. Einige Druckoperationen werden in den Schritten weggelassen, und Sie können die Ausgabe nach Bedarf drucken.

Erstellen eines strukturierten Arrays

Um ein strukturiertes Array zu erstellen, können wir die np.array-Funktion verwenden und den Datentyp über den dtype-Parameter angeben. Der Datentyp sollte eine Liste von Tupeln sein, wobei jedes Tupel ein Feld im strukturierten Array darstellt. Jedes Tupel sollte den Feldnamen und den Datentyp des Felds enthalten.

import numpy as np

## Erstellen eines strukturierten Arrays
x = np.array([('Alice', 25), ('Bob', 30)], dtype=[('name', 'U10'), ('age', int)])

Zugreifen auf Felder

Wir können auf einzelne Felder eines strukturierten Arrays über den Index mit dem Feldnamen zugreifen. Dies gibt ein neues Array zurück, das nur die Werte dieses Felds enthält.

## Zugreifen auf das 'name'-Feld
names = x['name']

Ändern von Feldern

Wir können auch einzelne Felder eines strukturierten Arrays über den Index mit dem Feldnamen ändern und neue Werte zuweisen.

## Ändern des 'age'-Felds
x['age'] = [26, 31]

Indizierung mit mehreren Feldern

Wir können ein strukturiertes Array mit mehreren Feldern indizieren, indem wir eine Liste von Feldnamen übergeben. Dies gibt ein neues strukturiertes Array zurück, das nur die angegebenen Felder enthält.

## Indizierung mit mehreren Feldern
subset = x[['name', 'age']]

Vergleichen von strukturierten Arrays

Wenn die Datentypen zweier strukturierten Arrays gleich sind, können wir sie mit dem Gleichheitsoperator (==) vergleichen. Dies gibt ein boolesches Array zurück, das angibt, welche Elemente für alle Felder die gleichen Werte haben.

## Vergleichen von zwei strukturierten Arrays
y = np.array([('Alice', 25), ('Bob', 30)], dtype=[('name', 'U10'), ('age', int)])
comparison = x == y

Erstellen eines Rekordarrays

Ein Rekordarray ist eine Unterklasse von ndarray, die den Zugang zu Feldern über Attribute statt über Indizes ermöglicht. Wir können ein Rekordarray mit der Funktion np.rec.array erstellen.

## Erstellen eines Rekordarrays
recordarr = np.rec.array([('Alice', 25), ('Bob', 30)], dtype=[('name', 'U10'), ('age', int)])

Zugang zu Feldern über Attribute

Wir können die Felder eines Rekordarrays über Attribute statt über Indizes zugreifen. Dies bietet eine komfortablere Möglichkeit, mit strukturierten Daten umzugehen.

## Zugang zu Feldern über Attribute
names = recordarr.name

Konvertieren eines strukturierten Arrays in ein Rekordarray

Wir können ein strukturiertes Array in ein Rekordarray umwandeln, indem wir die view-Methode verwenden und den np.recarray-Typ angeben.

## Konvertieren eines strukturierten Arrays in ein Rekordarray
recordarr = x.view(np.recarray)

Konvertieren eines Rekordarrays in ein strukturiertes Array

Um ein Rekordarray wieder in ein strukturiertes Array umzuwandeln, können wir die view-Methode verwenden und den ursprünglichen Datentyp des strukturierten Arrays angeben.

## Konvertieren eines Rekordarrays in ein strukturiertes Array
x = recordarr.view(dtype=[('name', 'U10'), ('age', int)])

Zusammenfassung

In diesem Lab haben wir gelernt, wie man in NumPy strukturierte Arrays erstellt und mit ihnen umgeht. Strukturierte Arrays sind nützlich, um mit strukturierten Daten umzugehen, und sie ermöglichen uns, auf einzelne Felder des Arrays zuzugreifen und zu modifizieren. Wir haben auch über Rekordarrays gelernt, die eine komfortablere Möglichkeit bieten, mit strukturierten Daten umzugehen, indem sie den Zugang zu Feldern über Attribute statt über Indizes ermöglichen.