scipy.spatial.KDTree.

query#

KDTree.query(x, k=1, eps=0, p=2, distance_upper_bound=inf, workers=1)[Quelle]#

Fragt den KD-Baum nach den nächsten Nachbarn ab.

Parameter:
xarray_like, letzte Dimension self.m

Ein Array von Punkten, die abgefragt werden sollen.

kint oder Sequence[int], optional

Entweder die Anzahl der zurückzugebenden nächsten Nachbarn oder eine Liste der zurückzugebenden k-ten nächsten Nachbarn, beginnend bei 1.

epsnicht-negativer float, optional

Gibt ungefähre nächste Nachbarn zurück; der k-te zurückgegebene Wert ist garantiert nicht weiter entfernt als (1+eps) Mal die Entfernung zum echten k-ten nächsten Nachbarn.

pfloat, 1<=p<=infinity, optional

Welche Minkowski-p-Norm verwendet werden soll. 1 ist die Summe der Absolutwerte der Abstände („Manhattan“-Abstand). 2 ist der übliche Euklidische Abstand. Unendlich ist der maximale Koordinatenunterschiedsabstand. Ein großer, endlicher p kann einen ValueError verursachen, wenn es zu einem Überlauf kommen kann.

distance_upper_boundnicht-negativer float, optional

Gibt nur Nachbarn innerhalb dieses Abstands zurück. Dies wird verwendet, um Baumsuchen abzuschneiden. Wenn Sie eine Reihe von Abfrage der nächsten Nachbarn durchführen, kann es hilfreich sein, den Abstand zum nächsten Nachbarn des zuletzt abgefragten Punktes anzugeben.

workersint, optional

Anzahl der Worker, die für parallele Verarbeitung verwendet werden sollen. Wenn -1 angegeben wird, werden alle CPU-Threads verwendet. Standard: 1.

Hinzugefügt in Version 1.6.0.

Rückgabe:
dfloat oder Array von Floats

Die Entfernungen zu den nächsten Nachbarn. Wenn x die Form tuple+(self.m,) hat, dann hat d die Form tuple+(k,). Wenn k == 1, wird die letzte Dimension der Ausgabe gequetscht. Fehlende Nachbarn werden mit unendlichen Abständen angegeben. Treffer werden nach Entfernung sortiert (nächster zuerst).

Geändert in Version 1.9.0: Zuvor, wenn k=None war, dann war d ein Objekt-Array der Form tuple, das Listen von Entfernungen enthielt. Dieses Verhalten wurde entfernt, verwenden Sie stattdessen query_ball_point.

iInteger oder Array von Integers

Der Index jedes Nachbarn in self.data. i hat die gleiche Form wie d. Fehlende Nachbarn werden mit self.n angegeben.

Beispiele

>>> import numpy as np
>>> from scipy.spatial import KDTree
>>> x, y = np.mgrid[0:5, 2:8]
>>> tree = KDTree(np.c_[x.ravel(), y.ravel()])

Um die nächsten Nachbarn abzufragen und ein gequetschtes Ergebnis zu erhalten, verwenden Sie

>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=1)
>>> print(dd, ii, sep='\n')
[2.         0.2236068]
[ 0 13]

Um die nächsten Nachbarn abzufragen und ein nicht gequetschtes Ergebnis zu erhalten, verwenden Sie

>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[1])
>>> print(dd, ii, sep='\n')
[[2.        ]
 [0.2236068]]
[[ 0]
 [13]]

Um die zweitnächsten Nachbarn abzufragen und ein nicht gequetschtes Ergebnis zu erhalten, verwenden Sie

>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[2])
>>> print(dd, ii, sep='\n')
[[2.23606798]
 [0.80622577]]
[[ 6]
 [19]]

Um den ersten und zweiten nächsten Nachbarn abzufragen, verwenden Sie

>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=2)
>>> print(dd, ii, sep='\n')
[[2.         2.23606798]
 [0.2236068  0.80622577]]
[[ 0  6]
 [13 19]]

oder, spezifischer

>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[1, 2])
>>> print(dd, ii, sep='\n')
[[2.         2.23606798]
 [0.2236068  0.80622577]]
[[ 0  6]
 [13 19]]