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,)))
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
Mobile version