Kombinieren von Arrays mit mehreren Datentypen in NumPy
Der Wunsch, Arrays mit verschiedenen Datentypen in einem einzigen Array mit entsprechenden Datentypen in jeder Spalte zu verketten, stellt sich eine Herausforderung. Ein gängiger Ansatz, bei dem np.concatenate() verwendet wird, konvertiert leider das gesamte Array in den String-Datentyp, was zu Speicherineffizienzen führt.
Um diese Einschränkung zu überwinden, besteht eine praktikable Lösung darin, Datensatz-Arrays oder strukturierte Arrays zu verwenden.
Datensatz-Arrays
Datensatz-Arrays ermöglichen den Zugriff auf einzelne Datenfelder über Attribute. Durch Angabe des Datentyps jedes Felds können mehrere Datentypen in einem einzigen Array kombiniert werden:
import numpy as np
a = np.array(['a', 'b', 'c', 'd', 'e'])
b = np.arange(5)
records = np.rec.fromarrays((a, b), names=('keys', 'data'))
print(records)
Output:
rec.array([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4)], dtype=[('keys', '|S1'), ('data', '<i8')])
Strukturierte Arrays
Strukturierte Arrays sind ähnlich und bietet die Möglichkeit, den Datentyp jeder Spalte zu definieren. Sie unterstützen jedoch keinen Attributzugriff wie Datensatzarrays:
arr = np.array([('a', 0), ('b', 1)],
dtype=([('keys', '|S1'), ('data', 'i8')]))
print(arr)
Ausgabe:
array([('a', 0), ('b', 1)], dtype=[('keys', '|S1'), ('data', '<i8')])
Auswahl zwischen Datensatz und strukturierten Arrays
Die Wahl zwischen Datensatzarrays und strukturierten Arrays hängt von den einzelnen Anwendungsfällen ab. Datensatzarrays bieten Komfort beim Attributzugriff, während strukturierte Arrays für komplexere Datenstrukturen bevorzugt werden können. Beide Ansätze bieten eine bequeme Möglichkeit, Arrays mit unterschiedlichen Datentypen in NumPy zu kombinieren und bieten so Flexibilität und Effizienz bei der Datenbearbeitung.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3