python scipy spatial.KDTree.query用法及代碼示例


用法:

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

查詢kd-tree附近的鄰居

參數:

x array_like, last dimension self.m

要查詢的點數組。

k int, 可選參數

要返回的最近鄰點的數量。

eps nonnegative float, 可選參數

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

p float, 1<=p<=infinity, 可選參數

使用哪個Minkowski p-norm。 1是sum-of-absolute值“Manhattan”距離2是通常的歐幾里得距離無窮大是maximum-coordinate-difference距離

distance_upper_bound nonnegative float, 可選參數

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

返回值:

d 浮點數或浮點數數組

到最近鄰居的距離。如果x具有形狀元組+(self.m,),則如果k為1,則d具有形狀元組;如果k大於1,則具有元組+(k,)。丟失的鄰居(例如,當k> n或給出distance_upper_bound時)以無限距離表示。如果k為None,則d為形狀元組​​的對象數組,其中包含距離列表。不論哪種情況,命中都按距離排序(最接近的優先)。

i 整數或整數數組

self.data中鄰居的位置。我與d的形狀相同。

例子:

>>> from scipy import spatial >>> x, y = np.mgrid[0:5, 2:8] >>> tree = spatial.KDTree(list(zip(x.ravel(), y.ravel()))) >>> tree.data array([[0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7]]) >>> pts = np.array([[0, 0], [2.1, 2.9]]) >>> tree.query(pts) (array([ 2. , 0.14142136]), array([ 0, 13]))
返回值是:離查詢點最近的點的距離和索引。(array([ 2. , 0.14142136])是距離,array([ 0, 13]))是索引。 >>> tree.query(pts[0]) (2.0, 0)】
返回值是:離查詢點最近的點的距離和索引。
 利用matlab代碼可視化:
clc;clear;close all;
dian=[];
for i=0:1:4
    for j=2:1:7
        dian=[dian;[i,j]];
    end
end
pts1=[0,0];
pts2=[2.1,2.9];
figure(1);hold on ;plot(dian(:,1),dian(:,2),'ro');
for k=1:size(dian,1)
    figure(1);hold on ;text(dian(k,1)-0.2,dian(k,2)-0.1,['序號:',num2str(k-1)],'color','k');
end
figure(1);hold on ;plot(pts1(:,1),pts1(:,2),'rp','markersize',11);
figure(1);hold on ;plot(pts2(:,1),pts2(:,2),'rp','markersize',11);

 

源碼:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM