Die Suche nach einzigartigen Punkte im numpy array

Was ist ein schneller Weg zu finden, einzigartige x -, y-Punkte (entfernen Sie Duplikate) in ein numpy-array wie:

points = numpy.random.randint(0, 5, (10,2))

Ich dachte, der Umwandlung von Punkten zu einem komplexen zahlen und dann die überprüfung für einzigartig, aber das scheint eher verworren:

b = numpy.unique(points[:,0] + 1j * points[:,1])
points = numpy.column_stack((b.real, b.imag))
  • Wenn Sie nicht benötigen, um zu erhalten, benutzen Sie Tupel, für die Punkte und konvertiert die Liste in ein set.
  • Ich brauche das Ergebnis in ein numpy-array, so das scheint wie eine Menge von Umbauten.
  • Gibt es einen wirklichen Grund, warum die einfache Lösung numpy.vstack([numpy.array(u) for u in set([tuple(p) for p in points])]) ist nicht schnell genug?
  • Denken es muss einen schnelleren Weg als Liste Verständnis, wenn es um längere Listen von Punkten, Nein?
  • Wim-Methode ist schneller, insbesondere bei größeren arrays. Wahrscheinlich, weil es nicht stört Sortieren Sie das Ergebnis. Ich habe einige timeit benchmarks zu meinem post. Vielleicht wim wird post seine Lösung als Antwort?
  • Ok, ich werde es hinzufügen.

InformationsquelleAutor Benjamin | 2011-11-03
Schreibe einen Kommentar