用法:
class scipy.spatial.KDTree(data, leafsize=10)
kd-tree用於快速查找nearest-neighbor
此類提供一組k-dimensional點的索引,這些索引可用於快速查找任何點的最近鄰居。
參數:
- data:(N,K) array_like
要索引的數據點。此數組不會被複製,因此修改此數據將導致偽造的結果。
- leafsize:int, 可選參數
算法切換到蠻力的點數。必須是積極的。
異常:
- 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。