Arrays mit mehreren Datentypen verketten
Beim Umgang mit Daten unterschiedlichen Typs ist es oft notwendig, diese in einem einzigen Array zu kombinieren. Dies kann effizient durchgeführt werden, ohne das gesamte Array in einen einzigen Datentyp zu konvertieren.
Stellen Sie sich das folgende Szenario vor: Sie haben zwei Arrays, A mit Zeichenfolgen und B mit Ganzzahlen. Das Ziel besteht darin, ein kombiniertes Array „combined_array“ zu erstellen, in dem jede Spalte ihren ursprünglichen Datentyp behält.
Während der Verkettung von A und B mit np.concatenate erscheint „combined_array = np.concatenate((A, B), axis = 1)“. Ganz einfach, es konvertiert das gesamte Array standardmäßig in dtype=string, was zu Speicherineffizienzen führt.
Lösung: Arrays und strukturierte Arrays aufzeichnen
Ein effektiver Ansatz ist die Verwendung Datensatz-Arrays oder strukturierte Arrays.
Datensatz-Arrays:
Datensatz-Arrays bieten eine flexible Möglichkeit, mehrere Datentypen in einem einzigen Array zu speichern. Auf die einzelnen Felder kann über Attribute zugegriffen 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) # rec.array([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4)], # dtype=[('keys', '|S1'), ('data', '<i8')]) print(records['keys']) # rec.array(['a', 'b', 'c', 'd', 'e'], # dtype='|S1') print(records['data']) # array([0, 1, 2, 3, 4])
Strukturierte Arrays:
Ähnlich wie Datensatzarrays ermöglichen strukturierte Arrays die Angabe eines Datentyps für jedes Feld :
arr = np.array([('a', 0), ('b', 1)], dtype=([('keys', '|S1'), ('data', 'i8')])) print(arr) # array([('a', 0), ('b', 1)], # dtype=[('keys', '|S1'), ('data', '<i8')])
Beachten Sie, dass Datensatzarrays Attributzugriff ermöglichen, strukturierte Arrays jedoch nicht.
Das obige ist der detaillierte Inhalt vonWie verkettet man Arrays mit unterschiedlichen Datentypen und erhält die Speichereffizienz aufrecht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!