scipy.spatial.KDTree.

query_ball_point#

KDTree.query_ball_point(x, r, p=2.0, eps=0, workers=1, return_sorted=None, return_length=False)[Quelle]#

Finde alle Punkte innerhalb der Distanz r von Punkt(en) x.

Parameter:
xarray_like, Form tuple + (self.m,)

Der Punkt oder die Punkte, nach deren Nachbarn gesucht werden soll.

rarray_like, float

Der Radius der zurückzugebenden Punkte, muss auf die Länge von x broadcasten.

pfloat, optional

Welche Minkowski-p-Norm verwendet werden soll. Sollte im Bereich [1, inf] liegen. Ein endliches großes p kann einen ValueError verursachen, wenn ein Überlauf auftreten kann.

epsnicht-negativer float, optional

Ungefähre Suche. Zweige des Baums werden nicht erkundet, wenn ihre nächsten Punkte weiter entfernt sind als r / (1 + eps), und Zweige werden in großen Mengen hinzugefügt, wenn ihre entferntesten Punkte näher sind als r * (1 + eps).

workersint, optional

Anzahl der für die parallele Verarbeitung zu planenden Jobs. Wenn -1 angegeben wird, werden alle Prozessoren verwendet. Standard: 1.

Hinzugefügt in Version 1.6.0.

return_sortedbool, optional

Sortiert zurückgegebene Indizes, wenn True, und sortiert sie nicht, wenn False. Wenn None, werden einzelne Punktabfragen nicht sortiert, aber Mehrpunktabfragen werden sortiert, was das Verhalten vor der Hinzufügung dieser Option war.

Hinzugefügt in Version 1.6.0.

return_lengthbool, optional

Gibt die Anzahl der Punkte innerhalb des Radius zurück, anstatt eine Liste der Indizes.

Hinzugefügt in Version 1.6.0.

Rückgabe:
resultslist oder array von Listen

Wenn x ein einzelner Punkt ist, gibt eine Liste der Indizes der Nachbarn von x zurück. Wenn x ein Array von Punkten ist, gibt ein Objektarray der Form tuple mit Listen von Nachbarn zurück.

Hinweise

Wenn Sie viele Punkte haben, deren Nachbarn Sie finden möchten, können Sie viel Zeit sparen, indem Sie diese in einen KDTree einfügen und query_ball_tree verwenden.

Beispiele

>>> import numpy as np
>>> from scipy import spatial
>>> x, y = np.mgrid[0:5, 0:5]
>>> points = np.c_[x.ravel(), y.ravel()]
>>> tree = spatial.KDTree(points)
>>> sorted(tree.query_ball_point([2, 0], 1))
[5, 10, 11, 15]

Mehrere Punkte abfragen und die Ergebnisse plotten

>>> import matplotlib.pyplot as plt
>>> points = np.asarray(points)
>>> plt.plot(points[:,0], points[:,1], '.')
>>> for results in tree.query_ball_point(([2, 0], [3, 3]), 1):
...     nearby_points = points[results]
...     plt.plot(nearby_points[:,0], nearby_points[:,1], 'o')
>>> plt.margins(0.1, 0.1)
>>> plt.show()
../../_images/scipy-spatial-KDTree-query_ball_point-1.png