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


Python scipy spatial.KDTree用法及代碼示例

用法:

class scipy.spatial.KDTree(data, leafsize=10)

kd-tree用於快速查找nearest-neighbor

此類提供一組k-dimensional點的索引,這些索引可用於快速查找任何點的最近鄰居。

參數:

data(N,K) array_like

要索引的數據點。此數組不會被複製,因此修改此數據將導致偽造的結果。

leafsizeint, 可選參數

算法切換到蠻力的點數。必須是積極的。

異常:

RuntimeError

對於大型數據集,可以超過最大遞歸限製。如果發生這種情況,請通過以下方式增加leafsize參數的值或通過以下方式增加遞歸限製:

>>> import sys
>>> sys.setrecursionlimit(10000)

注意:

Maneewongvatana和Mount 1999中描述了使用的算法。一般的想法是kd-tree是一個二叉樹,其每個節點代表一個axis-aligned超矩形。每個節點指定一個軸,並根據其沿該軸的坐標是大於還是小於特定值來拆分點集。

在構造過程中,通過“sliding midpoint”規則選擇軸和分割點,這確保了單元不會全部變長和變薄。

可以查詢樹以查找任何給定點的r個最近鄰居(可選地,僅返回該點的最大距離內的那些鄰居)。對於r個近似最接近的鄰居,也可以查詢它,從而大大提高了效率。

對於大尺寸(20已經很大),不要指望它比蠻力快得多。高維nearest-neighbor查詢是計算機科學中的一個實質性開放問題。

該樹還支持all-neighbors查詢,既可以使用點數組,也可以使用其他kd-trees查詢。它們確實使用了相當有效的算法,但是kd-tree不一定是此類計算的最佳數據結構。

方法:

count_neighbors(self, other, r[, p])

計算附近可以形成多少對。

query(self, x[, k, eps, p, distance_upper_bound])

查詢kd-tree附近的鄰居

query_ball_point(self, x, r[, p, eps])

查找點x的距離r內的所有點。

query_ball_tree(self, other, r[, p, eps])

查找距離最大為r的所有點對

query_pairs(self, r[, p, eps])

查找距離內的所有對點。

sparse_distance_matrix(self, other, max_distance)

計算稀疏距離矩陣

innernode

leafnode

node

源碼:

scipy.spatial.KDTree的API實現見:[源代碼]


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