HOWTO · NumPy
Konvertieren Sie die Pandas-Serie in das NumPy-Array
Mit `Series.to_numpy()` wandeln Sie die Werte einer pandas Series in ein NumPy-Array um. Der Index bleibt separat.
Auf dieser Seite
Eine pandas Series enthält Werte und einen Index mit Bezeichnungen. Um ein NumPy-Array mit den Werten zu erhalten, rufen Sie Series.to_numpy() direkt für die Series auf. Die Bezeichnungen sind nicht enthalten. Wenn Sie den Index für den nächsten Schritt benötigen, behalten oder konvertieren Sie ihn separat.
Eine pandas Series mit Series.to_numpy() in ein NumPy-Array umwandeln
Series.to_numpy() ist die direkte Wahl, wenn ein NumPy-ndarray benötigt wird. Das Beispiel erstellt eine Series mit zwei numerischen Werten und Bezeichnungen, wandelt die Series-Werte um und untersucht das resultierende Array und seinen Datentyp. Es gibt die Werte [82 91] aus und meldet als Array-Datentyp int64.
Führen Sie dieses Beispiel aus:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
import pandas as pd
scores = pd.Series([82, 91], index=["Mia", "Noah"], name="score")
values = scores.to_numpy()
print(values)
print(values.dtype)
[82 91]
int64
Das Array enthält die Werte in der Reihenfolge der Series. Es enthält weder "Mia" noch "Noah"; diese Bezeichnungen bleiben in scores.index. Das ist wichtig, wenn Sie die Werte an eine NumPy-Operation übergeben: Dort zählt die Positionsreihenfolge, und die pandas-Bezeichnungen werden nicht übernommen.
Series.array verwenden, wenn Sie das Erweiterungsarray von pandas benötigen
Verwenden Sie Series.array, wenn die nächste Operation die Array-Darstellung von pandas erhalten soll. Je nach den Daten der Series kann diese Darstellung ein Erweiterungsarray statt eines NumPy-ndarray sein. Erweiterungsarrays bewahren das für pandas spezifische Verhalten von Werten, deren Datentypen sich nicht direkt einem herkömmlichen NumPy-Datentyp zuordnen lassen. Wenn die aufrufende API ausdrücklich ein ndarray benötigt, verwenden Sie stattdessen Series.to_numpy().
Der Ausdruck scores.array greift beispielsweise auf die Array-Darstellung der Series zu, während scores.to_numpy() die NumPy-Darstellung anfordert. Diese Varianten sind für unterschiedliche Empfänger gedacht. Gehen Sie nicht davon aus, dass das Ergebnis von Series.array ein ndarray ist, und übergeben Sie es nicht ungeprüft an eine API, die eines voraussetzt.
Series.values oder numpy.asarray() als kompatible Alternativen verwenden
Series.values ist eine kompakte Alternative, um die Werte einer Series als arrayähnliches Objekt zu erhalten. Das genaue Ergebnis kann vom Datentyp der Series abhängen. Verwenden Sie daher Series.to_numpy(), wenn Sie eine explizite Umwandlungsmethode und ein NumPy-ndarray als Ergebnis wünschen. Mit numpy.asarray(scores) können Sie ebenfalls ein Array aus einer Series anfordern. Das ist nützlich, wenn Sie mit NumPy-Code arbeiten, der bereits arrayähnliche Eingaben akzeptiert.
Diese Varianten beziehen sich auf die Werte der Series, nicht auf ihre Bezeichnungen. Richten Sie Ihre Wahl nach den Anforderungen des Codes, der das Ergebnis verwendet: Verwenden Sie Series.to_numpy() für eine eindeutige Umwandlung in ein ndarray, Series.array für die Array-Darstellung von pandas oder Series.values und numpy.asarray(), wenn diese kompatiblen Varianten zum umgebenden Code passen. Keine dieser Varianten wandelt den Index in das Werte-Array um.
Das Array-Ergebnis prüfen und Index und Datentyp getrennt behandeln
Prüfen Sie das Ergebnis, wenn der Datentyp spätere Berechnungen oder die Speicherung beeinflusst. Eine numerische Series ergibt im Allgemeinen einen numerischen NumPy-Datentyp; für Daten mit pandas-spezifischen oder gemischten Werten kann eine andere NumPy-Darstellung erforderlich sein. Prüfen Sie values.dtype, um den tatsächlichen Datentyp Ihrer Daten festzustellen, statt anzunehmen, dass jede Series denselben Array-Typ ergibt. Optionale Einstellungen für Datentyp oder Kopieren werden hier nicht gezeigt, da die bereitgestellten Aufgabenbelege keine versionsspezifischen Hinweise zu Series enthalten.
Wenn Sie auch die Bezeichnungen benötigen, greifen Sie separat auf scores.index zu und halten Sie die Zuordnung zwischen Bezeichnungen und Werten in Ihrem Programm ausdrücklich fest. Werden nur die Werte umgewandelt, geht die labelbasierte Ausrichtung bei nachfolgenden NumPy-Operationen verloren. Bei numerischen Verarbeitungen ist das oft beabsichtigt. Bevor Sie jedoch Werte aus mehreren Series zusammenführen, sollten Sie prüfen, ob ihre Reihenfolge übereinstimmt. Eine Umwandlung von Series in ein Array richtet zwei Series nicht anhand ihrer Bezeichnungen aus.