在numpy数组中查找值组并计算它们之间的距离

时间:2019-07-12 13:31:57

标签: python numpy matrix grouping

我有一个巨大的Numpy 2D数组。我想找到具有相同值的点组,并找到最接近的相似组的距离。一个例子:

0  0  0  0  0  0  0  0  0  0  0  0
0  0  0  0  0  0  0  0 12  0  0  0
0  0  0  0  0  0  0 12 12  0  0  0
0  0  0  0  0  0 12 12 12 12  0  0
0  0  0  0  0 12 12 12 12  0  0  0
0  0  0  0 12 12 12 12  0  0  0  0
0  0 12 12 12 12 12  0  0  0  0  0
0 12  0  0  0  0  0  0  0  0  0  0
0  0  0  0  0  0  0  0  0  0  0  0
0  0  0  0  0  0  0  0  0  0  0  0
0  0  0  0  0  0  0  0 20 20 20  0
0  0  0  0  0  0  0  0  0 20 20  0
0  0  0  0  0  0  0  0  0  0  0  0
0  0  0  0  0 14 14  0  0  0  0  0
0  0  0  0  0 14 14  0  0  0  0  0
0  0  0  0  0  0  0  0  0  0  0  0

在这种情况下,我分为三个组:12、20和14。我想找到两个组,然后计算它们之间的最小距离。对于第12组,最接近的是第20组,距离为sqrt(2^2+4^2)=4.47

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以尝试对固定半径的圆形核使用膨胀。接下来,如果存在一个非零点更改了组,则记住其先前和更新的组。使用二等分选择新的半径。 log(size)迭代后,您将获得最小半径和一组相关的对。