gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:13:27 24 4
gpt4 key购买 nike

我有一个二维 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com