python - 使用具有多个目标变量和多个搜索条件的 KDtree 在 sklearn 中查找 Kneighbors
问题描述
可以说这是我正在实施的简单 KD 树算法
def Test():
features = np.random.random((10, 2))
X = np.array(features[0:2])
print(X)
tree = KDTree(features, leaf_size=40)
indic = tree.query_radius(X, r= 0.1)
counter = 0
for i in indic:
a = (features[i])
np.savetxt('file{}.txt'.format(counter), a, fmt='%s')
counter += 1
yield i
tree = Test()
[X for X in tree]
在这里,我为每个目标位置的每个相邻元素保存文本文件,这工作得很好。
有什么技巧可以让我对每个目标点使用不同的搜索条件,而无需一次又一次地创建单独的树查询?
例如,假设我想使用一个变量X = np.array(features[0]
和r = 0.1
另一个变量
现在,我只能这样Y = np.array(features[1]
想r = 0.5
indic1 = tree.query_radius(X, r= 0.1)
indic2 = tree.query_radius(Y, r= 0.5)
有没有办法可以将这两者结合起来进行单树查询?
解决方案
是的,有一种方法可以做到这一点,只需一次query_radius
调用,来自文档:
如果每个点需要不同的半径,r 可以是单个值,也可以是形状为 x.shape[:-1] 的值的数组。
所以你可以这样做:
import numpy as np
from sklearn.neighbors import KDTree
np.random.seed(42)
features = np.random.random((10, 2))
X = np.array(features[0:2])
tree = KDTree(features, leaf_size=40)
indices = tree.query_radius(X, r=np.array([0.1, 0.5]))
for cursor, ix in enumerate(indices):
np.savetxt('file{}.txt'.format(cursor), features[ix], fmt='%s')
输出为 file0.txt 和 file1.txt,file0.txt 有 1 个点(半径较小),file1.txt 有 5 个点(半径较大)。
推荐阅读
- android - React-Native:未定义不是对象(评估 'Sn[e]')
- javascript - OpenStreetMap OSMXML 未呈现
- conda - 环境不一致,请仔细查看打包方案-openblas
- xml - 如何在 React 框架中将不透明度应用于 Google 地图之上的 KML 层?
- mysql - 如何找出我的 MySQL 中的默认字符集/排序规则
- database - oracle数据库中的并发会话
- sql - ORA-01722: 使用 to_number 时号码无效
- jax-rs - jboss eap 7.0中如何配置jax-rs相关子系统
- docker - PHP 的作曲家包管理器的容器显示消息/错误:“docker_composer_1 exited with code 0”与 docker-compose
- .htaccess - 使用 htaccess 将非 www 重定向到 www url - Laravel,Heroku