Ich habe eine Reihe von Koordinaten in drei numpy
Arrays enthalten: xarr
, yarr
und zarr
(Positionen in jedem Array entsprechend gehören zu dem gleichen Punkt - also der erste Punkt ist, an xarr[0]
, yarr[0]
, zarr[0]
) . Bei einem anderen Punkt im Raum unter P(x,y,z)
würde ich gerne alle Punkte finden, die innerhalb einer Entfernung r von P(x,y,z)
sind.Such benachbarte Punkte kd Bäume unter Verwendung
Meine aktuelle (und sehr ineffizient) Methode, dies zu tun, ist einfach durchlaufen und den Abstand zu jedem Punkt zu berechnen und sehen, ob es innerhalb r von P(x,y,z)
ist.
Allerdings würde ich gerne SciPy k-d-Baum-Algorithmus, um dies zu tun, aber ich bin nicht wirklich sicher, wie man es zu implementieren (ich bin sehr neu in Python). Ich würde es wirklich schätzen, wenn jemand kurz einen Code umreißen könnte, der zeigt , wie man eine k-d Baum gegebene Daten in dem Format einstellt, das ich habe.
Ich kenne SciPy documentation of its k-d tree implementation, Ich habe darüber aussehen, aber ich bin immer noch verwirrt, wie der Baum erstellen die Daten in dem Format gegeben Ich habe (np.mgrid
und ravel()
genannt wurden, und ich verstehe nicht ganz, warum).
Danke!
Wenn ich richtig verstehe, haben Sie ein * single * Nx3 Array von Punkten, und für jeden Punkt in diesem Array möchten Sie die Anzahl der anderen Punkte zählen, die in einem Radius von ihm fallen? –
@ali_m Sie haben 3 separate Arrays, eines für jede Koordinate, und sie wollen unter den so beschriebenen Punkten die Punkte finden, die nahe an einem neuen Punkt liegen. – gboffi
Ich weiß nicht, ob das für diese spezielle Frage nützlich ist, ich bin nicht groß auf kd-Bäumen (obwohl ich wahrscheinlich sollte), aber ich habe festgestellt, dass dies eine nützliche Bibliothek ist: https: //networkx.github. io/ –