作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
到 N
点的列表 [(x_1,y_1), (x_2,y_2), ... ]
我试图找到每个点的最近邻居基于距离的点。我的数据集太大,无法使用蛮力方法,因此 KDtree 似乎是最好的。
我看到 sklearn.neighbors.KDTree
可以找到最近的邻居,而不是从头开始实现。这能否用于找到每个粒子的最近邻居,即返回一个dim(N)
列表?
最佳答案
这个问题很宽泛,缺少细节。目前还不清楚您做了什么尝试、您的数据是什么样子以及最近的邻居是什么(身份?)。
假设您对身份不感兴趣(距离为 0),您可以查询两个最近邻并删除第一列。这可能是这里最简单的方法。
import numpy as np
from sklearn.neighbors import KDTree
np.random.seed(0)
X = np.random.random((5, 2)) # 5 points in 2 dimensions
tree = KDTree(X)
nearest_dist, nearest_ind = tree.query(X, k=2) # k=2 nearest neighbors where k1 = identity
print(X)
print(nearest_dist[:, 1]) # drop id; assumes sorted -> see args!
print(nearest_ind[:, 1]) # drop id
[[ 0.5488135 0.71518937]
[ 0.60276338 0.54488318]
[ 0.4236548 0.64589411]
[ 0.43758721 0.891773 ]
[ 0.96366276 0.38344152]]
[ 0.14306129 0.1786471 0.14306129 0.20869372 0.39536284]
[2 0 0 0 1]
关于python - 最近邻搜索 kdTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48126771/
我是一名优秀的程序员,十分优秀!