在sklearn中用多目标变量的KDtree寻找kneighbor

2024-10-02 20:36:44 发布

您现在位置:Python中文网/ 问答频道 /正文

假设这是我正在实现的简单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 现在,我只能这样想

^{2}$

有没有一种方法可以将这两种方法结合起来进行一棵树查询?在


Tags: 方法intesttree目标fordefnp
1条回答
网友
1楼 · 发布于 2024-10-02 20:36:44

是的,有一种方法可以做到这一点,只需使用文档中的一个query_radius调用:

r can be a single value, or an array of values of shape x.shape[:-1] if different radii are desired for each point.

所以你可以这样做:

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个点(半径较大)。在

相关问题 更多 >