Vektorisieren Sie die Suche nach Übereinstimmungen zwischen Numpy-ArraysPython

Python-Programme
Anonymous
 Vektorisieren Sie die Suche nach Übereinstimmungen zwischen Numpy-Arrays

Post by Anonymous »

Ich versuche zu überprüfen, wie viele Elemente in einem Numpy-Array mit einer bestimmten Toleranz in einem anderen Numpy-Array gefunden werden können. Bisher habe ich eine for-Schleife verwendet, um meine Vergleichslogik anzuwenden. Ich vermute jedoch, dass es eine elegante Lösung mit einem vektorisierten Ansatz gibt.
Die Numpy-Arrays haben die folgende Struktur:

Code: Select all

ch1 = array([     41,      53,      95, ..., 1180949, 1181054, 1181081], shape=(N,))

ch2 = array([     85,     221,     94, ..., 1180996, 1181055, 1181087], shape=(M,)))
wobei N und M große Zahlen sein können (und nicht unbedingt gleich sind) und die Einträge monoton ansteigen.
Was ich versuche, ist, die Elemente von ch1 zu zählen, die sich von den Elementen von ch2 um 1 unterscheiden. Um ein Beispiel zu geben, wenn man die Arrays oben betrachtet, unterscheidet sich das Element 95 von ch1 um 1 vom Element 94 von ch2 Wir zählen diesen Eintrag. Dasselbe gilt für Eintrag 1181054 von ch1 und Eintrag 1181055 von ch2.
Das Problem, das ich habe, ist, dass ich nicht einfach (ch1 - ch2) oder (ch2 - ch1) ausführen kann, da die beiden Arrays nicht unbedingt die gleiche Form haben, da dies einen Fehler auslöst. Bisher habe ich eine for-Schleife über die Einträge von ch1/ch2 verwendet, die Differenz zwischen diesem Wert und dem anderen Array berechnet und den Eintrag gezählt, wenn das Element die Logik erfüllt (unten finden Sie möglicherweise einen Ausschnitt des Codes, den ich erstellt habe).
Gibt es eine Möglichkeit, diese Schleife zu vektorisieren, da dieser Vergleich zwischen den beiden Arrays zwischen Tausenden von Array-Paaren implementiert werden muss und dies mehr als bedeuten würde 100.000 Iterationen.

Code: Select all

counter = 0

for elm in ch1:
t_diff = elm - ch2
found, = np.nonzero(numpy.abs(t_diff)  0:
counter += 1

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post