python - 从无向 networkx 图中删除自循环

标签 python networkx

我使用 networkx 从节点列表创建了一个图。它有自循环。如何删除它们?以下是示例:

import networkx as NX
G=NX.Graph()
G.add_edge(1,2)
G.add_edge(1,1)
print (G.edges())

[(1, 2), (1, 1)]

我不想要 (1, 1) 边。

最佳答案

(下面的 networkx 1.x 说明)

如果您使用的是 networkx 2.x,请尝试

G.remove_edges_from(nx.selfloop_edges(G))

如果您有一个 MultiGraph(例如 configuration_model 生成的),如果您有一个带有小错误的旧版本 2.x,这可能不起作用。如果是这样并且您不想升级,那么您需要在删除边缘之前将其转换为列表。

G.remove_edges_from(list(nx.selfloop_edges(G)))

此错误已得到纠正 https://github.com/networkx/networkx/issues/4068 .


版本 1.x(当我最初回答这个问题时),它是:

G.remove_edges_from(G.selfloop_edges())

关于python - 从无向 networkx 图中删除自循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49427638/

相关文章:

python - 如何从 Delaunay 制作 NetworkX 图并保留输入节点的属性?

python - 如何根据节点颜色向networkx图添加图例

python - 存储和访问节点属性 python networkx

python - dict value 和 items 使用什么内部函数,以及如何覆盖它们?

python - 如何使用 Python 从图像中分离复选框按钮和复选框文本?

python - 仅从公钥破解长 RSA key

python - 有没有比 groupby 变换更快的替代方案?

python - TensorFlow 中的 FCN 缺少裁剪层

在 matplotlib 中绘制时,Python networkx 图出现困惑

python-2.7 - 绘制大型 NetworkX 图表时返回进度状态