GOOGLE ADS

Montag, 2. Mai 2022

Wie kann man die Werte zweier strukturierter Arrays mit zwei Schlüsseln kombinieren/zusammenführen?

Ich habe zwei strukturierte Arrays mit denselben Schlüsseln und Datentypen.

import numpy as np
# Define a dtype with x and y integers
arr1 = np.empty(6, dtype=[('x', int), ('y', int)])
arr2 = np.empty(8, dtype=[('x', int), ('y', int)])
# Add the data to the structured array
arr1['x'] = np.array([ 32, 32, 32, 32, 32, 39])
arr1['y'] = np.array([449, 451, 452, 453, 454, 463])
arr2['x'] = np.array([ 39, 34, 32, 32, 37, 32,23, 12])
arr2['y'] = np.array([463, 393, 453, 452, 261, 449, 1243, 263])

Die beiden strukturierten Arrays können, wie gezeigt, unterschiedliche Längen haben. Die Werte treten in x- und y -Paaren auf.

Ich möchte diese beiden strukturierten Arrays kombinieren, so dass


  • Werte, die zwischen ihnen geteilt werden (gleiche Kombination von x- und y-Werten), werden nicht dupliziert und treten nur einmal auf

  • Werte, die nicht zwischen ihnen geteilt werden (unterschiedliche x- und y-Wertkombinationen), werden in das zusammengeführte Strukturarray aufgenommen

  • Für das Anhängen von Werten ist keine Reihenfolge oder kein Muster erforderlich. Solange das Ergebnis alle x- und y-Paare enthält, die zwischen den beiden existieren, und eindeutig sind.


Wenn es ein effizientes Verfahren zum Kombinieren von mehr als zwei strukturierten Arrays gibt, wie beispielsweise 3 oder 4 dieser strukturierten Arrays, dann wäre eine Lösung wünschenswert.

Im obigen Beispiel möchte ich, dass es wie folgt zusammengeführt wird, wobei arr3das Ergebnis der Zusammenführung ist:

arr3['x'] = np.array([32,32,32,32,32,39,34,37,23,12])
arr3['y'] = np.array([449,451,452,453,454,463,393,261,1243,263])

Alle eindeutigen Wertepaare zwischen den beiden strukturierten Arrays befinden sich in arr3.

Ich habe versucht, Code zu erstellen, bin mir aber nicht sicher, wo ich anfangen soll. Danke.


Lösung des Problems

Sie können die Werte einfach mit np.concatenateund verketten und Duplikate mit entfernen np.unique:

arr3 = np.unique(np.concatenate([arr1, arr2]))

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...