當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy KDTree.query用法及代碼示例


本文簡要介紹 python 語言中 scipy.spatial.KDTree.query 的用法。

用法:

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

查詢最近的鄰居kd-tree。

參數

x 數組,最後一維 self.m

要查詢的點數組。

k int 或 Sequence[int],可選

要返回的最近鄰的數量,或者要返回的 k-th 最近鄰的列表,從 1 開始。

eps 非負浮點數,可選

返回近似最近鄰;第 k 個返回值保證不超過 (1+eps) 乘以到真正的第 k 個最近鄰居的距離。

p 浮點數,1<=p<=無窮大,可選

使用哪個 Minkowski p-norm。 1 是sum-of-absolute-values 距離(“Manhattan” 距離)。 2 是通常的歐幾裏得距離。無窮大是maximum-coordinate-difference距離。如果發生溢出,大的有限 p 可能會導致 ValueError。

distance_upper_bound 非負浮點數,可選

僅返回此距離內的鄰居。這用於修剪樹搜索,因此如果您正在執行一係列nearest-neighbor 查詢,它可能有助於提供到最近點的最近鄰居的距離。

workers 整數,可選

用於並行處理的工作人員數量。如果指定 -1,則使用所有 CPU 線程。默認值:1。

返回

d 浮點數或浮點數數組

到最近鄰居的距離。如果 x 具有形狀 tuple+(self.m,) ,則 d 具有形狀 tuple+(k,) 。當 k == 1 時,輸出的最後一個維度被壓縮。缺失的鄰居用無限距離表示。命中按距離排序(最近的優先)。

i 整數或整數數組

self.data 中每個鄰居的索引。 i 與 d 的形狀相同。缺少的鄰居用 self.n 表示。

例子

>>> 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()])

要查詢最近的鄰居並返回壓縮結果,請使用

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

要查詢最近的鄰居並返回未壓縮的結果,請使用

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

要查詢第二近鄰並返回未壓縮的結果,請使用

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

要查詢第一個和第二個最近的鄰居,請使用

>>> 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]]

或者,更具體

>>> 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]]

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.spatial.KDTree.query。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。