从 scikit-learn KDtree.query_radius() 中删除空输出并获取唯一值

问题描述 投票:0回答:1

我正在尝试展平 scikit-learn KDtree 的输出。我还想在展平数组上调用 np.unique() 。

我拨打的电话是:

kd_tree = KDTree(X)
idxs = kd_tree.query_radius(Y, r=0.2)

X、Y 的尺寸为 (49,2)(它们是 2D 坐标)。

我得到的输出是:

[array([], dtype=int64) array([7]) array([ 8, 21]) array([ 9, 22, 35])
 array([10, 23, 36]) array([11, 24, 37]) array([12, 25, 38]) array([0])
 array([ 1, 14]) array([ 2, 15, 28]) array([ 3, 16, 29, 42])
 array([ 4, 17, 30, 43]) array([ 5, 18, 31, 44]) array([ 6, 19, 32, 45])
 array([7]) array([ 8, 21]) array([ 9, 22, 35]) array([10, 23, 36])
 array([11, 24, 37]) array([12, 25, 38]) array([13, 26, 39])
 array([ 1, 14]) array([ 2, 15, 28]) array([ 3, 16, 29, 42])
 array([ 4, 17, 30, 43]) array([ 5, 18, 31, 44]) array([ 6, 19, 32, 45])
 array([20, 33, 46]) array([ 8, 21]) array([ 9, 22, 35])
 array([10, 23, 36]) array([11, 24, 37]) array([12, 25, 38])
 array([13, 26, 39]) array([27, 40]) array([ 2, 15, 28])
 array([ 3, 16, 29, 42]) array([ 4, 17, 30, 43]) array([ 5, 18, 31, 44])
 array([ 6, 19, 32, 45]) array([20, 33, 46]) array([34, 47])
 array([ 9, 22, 35]) array([10, 23, 36]) array([11, 24, 37])
 array([12, 25, 38]) array([13, 26, 39]) array([27, 40]) array([41])]

我希望输出为(无需循环数组):

[0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47]
python numpy scikit-learn kdtree
1个回答
0
投票

如果您显示的输出是

idxs
,您可以使用 numpy 中的
hstack
unique

np.unique(np.hstack(idxs))
© www.soinside.com 2019 - 2024. All rights reserved.