python - 查找共享共同元素的行

标签 python numpy graph-theory

我有一个二维 numpy 数组,其中每一行包含 2 个整数。我想找到属于共享公共(public)元素的行的所有元素组(a.k.a 来自 edgelist 数组的图形的连接组件)。例如,对于数组:

[[ 0  4]
 [ 0  7]
 [ 1  2]
 [ 1 13]
 [ 2  1]
 [ 2  9]
 [ 3 14]
 [ 3 16]
 [ 4  0]
 [ 4  5]
 [ 5  4]
 [ 5  6]
 [ 6  5]
 [ 6  7]
 [ 7  0]
 [ 7  6]]

将包含组

[[ 0  4  5  6  7]
 [ 1  2 13  9]
 [ 3 14 16]]

最佳答案

如果你可以使用库,假设你的数组是 a(注意你不能将组件作为 numpy 数组,因为它们可以是 numpy 中不存在的非矩形数组,所以这会输出它们作为集合):

import networkx as nx
G=nx.Graph()
G.add_edges_from(a)
print(sorted(nx.connected_components(G), key = len, reverse=True))
#[{0, 4, 5, 6, 7}, {1, 2, 13, 9}, {16, 3, 14}]

如果您需要一个没有额外库的纯 numpyic 解决方案,请查看这个通用解决方案: https://stackoverflow.com/a/61764414/4975981

关于python - 查找共享共同元素的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64072233/

相关文章:

python - 查找图中所有不存在的连接

python - 从 shell 脚本输出创建 json

python - 使用索引手动切片列表,Python

python - 将列表数组转换为元组/三元组数组

python - 用向量 [n,] 填充逻辑矩阵 [r,n]

python - 如何将图(NetworkX)节点的属性输出到数据帧(Pandas)中

algorithm - 图中源和目标之间权重的最小按位或

python - Django 1.8.8 迁移首先什么也没说,然后不会应用更改

python - 将 showforms() 命令与 Twill 结合使用时出现解析错误

python - 我想了解 Google NDB 数据存储 key