Есть ли способ разделить набор данных, состоящий из пар 3D-точек (или просто их порядковых номеров) на связанные кластеры? То есть две пары (a,b) и (c,d) должны находиться в одном кластере, если они имеют общую точку (т. е. a = c, b = c, a = d или b = d) или если существует цепочка из одной или нескольких других пар, каждая из которых имеет общую точку с предыдущей, от одной пары к другой.
Например, список пар:
[[1,2],[2,3],[4,5],[6,7],[7,8],[9,4],[8,5]]
будут сгруппированы следующим образом:
[[1,2],[2,3]]
[[4,5],[6,7],[7,8],[9,4],[8,5]]
В первом кластере пары (1,2) и (2,3) имеют общую точку 2 и не имеют общих точек ни с какими парами вне кластера. Во втором кластере пара (4,5) имеет общие точки с (9,4) и (8,5), а (8,5) имеет общую точку с (7,8), которая имеет общую точку с (6,7).
Данные изначально хранятся в массиве numpy, но формат вывода не слишком важен.
Мне нужно иметь возможность впоследствии получить доступ к данным, из которых состоит каждый отдельный кластер.
[1,2],[2,3]
находится в кластере, почему[6,7],[7,8]
также не находится в этом или его собственном кластере? Что вы имеете в виду под повторяющимися точками? - person roganjosh   schedule 19.10.2017[6,7],[7,8]
все еще подключен, но он отображается вместе с остальными. - person roganjosh   schedule 19.10.2017