本文簡要介紹 python 語言中 scipy.spatial.KDTree.count_neighbors
的用法。
用法:
KDTree.count_neighbors(other, r, p=2.0, weights=None, cumulative=True)#
計算附近可以形成多少對。
計算可以形成的對數
(x1,x2)
,其中x1
來自self
和x2
來自other
,其中distance(x1, x2, p) <= r
。self
和other
上的數據點可選地由weights
參數加權。 (見下文)這改編自 Gray 和 Moore [1] 說明的“two-pointcorrelation”算法。請參閱注釋以進行進一步討論。
- other: KD樹
要從中繪製點的另一棵樹可以是與自身相同的樹。
- r: 浮點數或一維浮點數數組
產生計數的半徑。使用單個樹遍曆搜索多個半徑。如果計數是非累積的(
cumulative=False
),r
定義 bin 的邊,並且必須是非遞減的。- p: 浮點數,可選
1<=p<=無窮大。使用哪個 Minkowski p-norm。默認 2.0。如果可能發生溢出,有限的大 p 可能會導致 ValueError。
- weights: tuple、數組 或 None,可選
如果沒有,pair-counting 未加權。如果作為元組給出, weights[0] 是
self
中點的權重,而 weights[1] 是other
中點的權重;任何一個都可以是 None 表示這些點是未加權的。如果作為 數組 給出,權重是self
和other
中點的權重。為此,self
和other
必須是同一棵樹。如果self
和other
是兩棵不同的樹,則會引發ValueError
。默認值:無- cumulative: 布爾型,可選
返回的計數是否是累積的。當累積設置為
False
時,該算法經過優化以使用r
指定的大量 bin (>10)。當cumulative
設置為 True 時,算法經過優化以使用少量r
。默認值:真
- result: 標量或一維數組
對數。對於未加權計數,結果為整數。對於加權計數,結果是浮點數。如果累積為 False,則
result[i]
包含帶有(-inf if i == 0 else r[i-1]) < R <= r[i]
的計數
參數 ::
返回 ::
注意:
Pair-counting是用於從由對象位置組成的數據集中計算兩點相關函數的基本操作。
兩點相關函數測量物體的聚類,並廣泛應用於宇宙學中,以量化宇宙中的大尺度結構,但它對於也發生物體自相似組裝的其他領域的數據分析可能很有用。
D
的兩點相關函數的 Landy-Szalay 估計器測量D
中的聚類信號。 [2]例如,給定兩組對象的位置,
objects
D
(data) 包含聚類信號,並且不包含信號的對象
R
(隨機),
其中括號表示周圍有限箱中兩個數據集之間的計數對
r
(距離),對應設置累積=假, 和f = float(len(D)) / float(len(R))
是來自數據的對象數與隨機數之間的比率。這裏實現的算法大致基於[1]中說明的dual-tree算法。我們根據
cumulative
的設置在兩種不同的 pair-cumulation 方案之間切換。我們在cumulative == False
時使用的方法的計算時間不隨 bin 總數變化。cumulative == True
的算法與 bin 數量成線性比例,但僅使用 1 或 2 個 bin 時速度稍快。 [5]。作為樸素pair-counting的擴展,加權pair-counting計算權重的乘積而不是對數。加權pair-counting 用於估計標記的相關函數([3],第 2.2 節),或正確計算每個距離箱的數據平均值(例如,[4],第 2.1 節關於紅移)。
[2]Landy 和 Szalay,“角度相關函數的偏差和方差”,《天體物理學雜誌》,1993,http://adsabs.harvard.edu/abs/1993ApJ…412…64L
[3]Sheth、Connolly 和 Skibba,“星係形成模型中的顯著相關性”,Arxiv e-print,2005,https://arxiv.org/abs/astro-ph/0511773
[4]Hawkins 等人,“2dF 星係紅移調查:相關函數、奇特速度和宇宙物質密度”,皇家天文學會月刊,2002 年,http://adsabs.harvard.edu/abs/2003MNRAS.346…78H
例子:
您可以計算距離內兩個kd-trees 之間的鄰居數:
>>> import numpy as np >>> from scipy.spatial import KDTree >>> rng = np.random.default_rng() >>> points1 = rng.random((5, 2)) >>> points2 = rng.random((5, 2)) >>> kd_tree1 = KDTree(points1) >>> kd_tree2 = KDTree(points2) >>> kd_tree1.count_neighbors(kd_tree2, 0.2) 1
此數字與
query_ball_tree
計算的總對數相同:>>> indexes = kd_tree1.query_ball_tree(kd_tree2, r=0.2) >>> sum([len(i) for i in indexes]) 1
相關用法
- Python SciPy KDTree.query_pairs用法及代碼示例
- Python SciPy KDTree.sparse_distance_matrix用法及代碼示例
- Python SciPy KDTree.query_ball_tree用法及代碼示例
- Python SciPy KDTree.query_ball_point用法及代碼示例
- Python SciPy KDTree.query用法及代碼示例
- Python SciPy KroghInterpolator.derivatives用法及代碼示例
- Python SciPy interpolate.make_interp_spline用法及代碼示例
- Python SciPy stats.anderson用法及代碼示例
- Python SciPy ClusterNode.pre_order用法及代碼示例
- Python SciPy stats.iqr用法及代碼示例
- Python SciPy FortranFile.read_record用法及代碼示例
- Python SciPy ndimage.correlate用法及代碼示例
- Python SciPy special.exp1用法及代碼示例
- Python SciPy special.expn用法及代碼示例
- Python SciPy signal.czt_points用法及代碼示例
- Python SciPy interpolate.krogh_interpolate用法及代碼示例
- Python SciPy ndimage.morphological_gradient用法及代碼示例
- Python SciPy distance.sokalmichener用法及代碼示例
- Python SciPy linalg.eigvalsh_tridiagonal用法及代碼示例
- Python SciPy linalg.cdf2rdf用法及代碼示例
- Python SciPy csc_array.diagonal用法及代碼示例
- Python SciPy fft.idctn用法及代碼示例
- Python SciPy linalg.LaplacianNd用法及代碼示例
- Python SciPy linalg.solve_circulant用法及代碼示例
- Python SciPy hierarchy.ward用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.spatial.KDTree.count_neighbors。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。