scipy.spatial.cKDTree.

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 x die Form tuple+(self.m,) hat, dann hat d die Form tuple+(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. Wenn x die Form tuple+(self.m,) hat, dann hat i die Form tuple+(k,). Wenn k == 1, wird die letzte Dimension der Ausgabe gestaucht. Fehlende Nachbarn werden durch self.n angezeigt.

Hinweise

Wenn der KD-Baum periodisch ist, wird die Position x in 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]]