ich habe einen n x 3 dimensionalen integer array. In einer Schleife arbeite ich mich durch alle Zeilen. Die Zahlen in einer Zeile sind stets verschieden. Die Reihenfolge der Zahlen in einer Zeile spielt keine Rolle. In dem großen Array können gleiche Zeilen auftreten. Den integer-array kann ich nicht verändern.
Ich möchte nun jedes auftretende Zahlentripel nur einmal bearbeiten und suche nach eine effizienten Methode dies zu realisieren.
Momentan erstelle ich mir "dynamisch" ein dictionary und überprüfe in jedem schleifendruchgang, ob das aktuelle zahlentripel schon vorhanden ist oder nicht.
Hier der Beispiel Code:
Code: Alles auswählen
import numpy as np
import itertools
source = np.arange(0, 5)
combos = itertools.combinations(source, 3)
big_arr = np.array( [e for e in combos] )
big_arr = np.vstack( (big_arr,big_arr[:,[1,2,0]],big_arr[:,[0,2,1]],big_arr) )
big_arr = big_arr[np.random.randint(len(big_arr),size=len(big_arr))]
# ROUTINE
b = {}
for a_i in big_arr:
a_i = tuple(np.sort(a_i))
if a_i not in b:
b.update( {a_i:True} )
# DO STUFF
else:
print 'a_i processed already'
Ich wäre dankebar für jegliche Idee.