query#
- cKDTree.query(self, x, k=1, eps=0, p=2, distance_upper_bound=np.inf, workers=1)#
Fragt den KD-Baum nach den nächsten Nachbarn ab
- Parameter:
- xarray_like, letzte Dimension self.m
Ein Array von Punkten zum Abfragen.
- kListe von ganzen Zahlen oder ganze Zahl
Die Liste der k-ten nächsten Nachbarn, die zurückgegeben werden sollen. Wenn k eine ganze Zahl ist, wird sie als Liste [1, … k] (range(1, k+1)) behandelt. Beachten Sie, dass die Zählung bei 1 beginnt.
- epsnicht-negative Gleitkommazahl
Gibt approximative nächste Nachbarn zurück; der k-te zurückgegebene Wert ist garantiert nicht weiter entfernt als (1+eps) mal die Entfernung zum tatsächlichen k-ten nächsten Nachbarn.
- pGleitkommazahl, 1<=p<=infinity
Welche Minkowski p-Norm verwendet werden soll. 1 ist die „Manhattan“-Entfernung (Summe der Absolutwerte). 2 ist die übliche Euklidische Entfernung. Unendlich ist die Entfernung, bei der die maximale Koordinatendifferenz betrachtet wird. Eine große endliche p-Zahl kann zu einem ValueError führen, wenn ein Überlauf auftreten kann.
- distance_upper_boundnicht-negative Gleitkommazahl
Gibt nur Nachbarn innerhalb dieser Entfernung zurück. Dies wird verwendet, um Baumdurchsuchen zu beschneiden, sodass es hilfreich sein kann, wenn Sie eine Reihe von Abfragen nach den nächsten Nachbarn durchführen, die Entfernung zum nächsten Nachbarn des zuletzt abgefragten Punkts anzugeben.
- workersint, optional
Anzahl der Worker für parallele Verarbeitung. Wenn -1 angegeben wird, werden alle CPU-Threads verwendet. Standard: 1.
Geändert in Version 1.9.0: Das Argument „n_jobs“ wurde in „workers“ umbenannt. Der alte Name „n_jobs“ wurde in SciPy 1.6.0 als veraltet markiert und in SciPy 1.9.0 entfernt.
- Rückgabe:
- dArray von Gleitkommazahlen
Die Entfernungen zu den nächsten Nachbarn. Wenn
xdie Formtuple+(self.m,)hat, dann hatddie Formtuple+(k,). Wenn k == 1, wird die letzte Dimension der Ausgabe gestaucht. Fehlende Nachbarn werden durch unendliche Entfernungen angezeigt.- indarray von ganzen Zahlen
Der Index jedes Nachbarn in
self.data. Wennxdie Formtuple+(self.m,)hat, dann hatidie Formtuple+(k,). Wenn k == 1, wird die letzte Dimension der Ausgabe gestaucht. Fehlende Nachbarn werden durchself.nangezeigt.
Hinweise
Wenn der KD-Baum periodisch ist, wird die Position
xin die Box eingepackt.Wenn die Eingabe k eine Liste ist, wird eine Abfrage für arange(max(k)) durchgeführt, aber nur Spalten, die die angeforderten Werte von k speichern, werden beibehalten. Dies wird so implementiert, dass der Speicherverbrauch reduziert wird.
Beispiele
>>> import numpy as np >>> from scipy.spatial import cKDTree >>> x, y = np.mgrid[0:5, 2:8] >>> tree = cKDTree(np.c_[x.ravel(), y.ravel()])
Um die nächsten Nachbarn abzufragen und ein gestauchtes Ergebnis zurückzugeben, 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 gestauchtes Ergebnis zurückzugeben, 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 den zweiten nächsten Nachbarn abzufragen und ein nicht gestauchtes Ergebnis zurückzugeben, 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, seien Sie 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]]