Python 在N维numpy数组中查找最近集

Python 在N维numpy数组中查找最近集,python,numpy,multidimensional-array,scipy,Python,Numpy,Multidimensional Array,Scipy,假设我有一个numpy数组,由所有这些范围的组合组成: A = numpy.arange(0.05, 7.05, 0.5) B = numpy.arange(0.0,0.75, 0.15 ) C = numpy.arange(8.0, 12.0, 0.15) D = numpy.arange(-2, 2, 0.15) E = [0.5, 0.55, 0.6, 0.65, 0.7] F = numpy.arange(0.1,2.1, 0.1) G = [0.5, 1.0, 1.5] 生成的数组称

假设我有一个numpy数组,由所有这些范围的组合组成:

A = numpy.arange(0.05, 7.05, 0.5)
B = numpy.arange(0.0,0.75, 0.15 )
C = numpy.arange(8.0, 12.0, 0.15)
D = numpy.arange(-2, 2, 0.15)
E = [0.5, 0.55, 0.6, 0.65, 0.7]
F = numpy.arange(0.1,2.1, 0.1)
G = [0.5, 1.0, 1.5]
生成的数组称为
A
,共有7行15309000列

现在我有一个理由:

group = [a ,b, c, d, e, f, g] = [1.22, 0.34, 9.45, -1.43, 0.52, 0.23, 0.64]
我正在寻找一种方法来找到a中最接近前一组的组合,即所选集合(最接近的组合)将是所有值都最接近要查找的组的组:a将是a中最接近的值,b将是b中最接近的值,等等

对于这种特殊情况,最接近的组是:

closest_group = [1.05, 0.3, 9.5, -1.4, 0.5, 0.2, 0.5]
我找到了一个不同的答案,如
scipy.signal.KDTree
,例如:

A[spatial.KDTree(A).query(set)[1]]
但不幸的是,这并没有收敛,导致了这一错误:

递归错误:超过最大递归深度


需要定义“最近的”。使用的距离概念是什么?FWIW,
set
是内置类型和函数。你应该考虑用另一种方式命名变量,比如
my_set
。比如:
((A-B[:,None])**2.sum(0).argmin()
,其中
A
是你的(715309000)数组,
B
是set数组?使用
einsum
matrix multiply
-我为评论中要求的更改编辑了帖子。在您的解释中,您是否重复使用了
A
这个名称?第一个代码块的第一行是
A=numpy.arange(0.05,7.05,0.5)
,但是您说“生成的数组称为
A
…”。