我有一个包含3列的文件。第一列和第二列显示边缘,第三列是边缘的符号(重量)。该文件有450行,所以我认为我必须有450条边。 我使用以下代码使用networkx解析边缘:
G = nx.read_edgelist('myfile.txt', delimiter='\t', nodetype=int, data=(('sign', int),))
并且i使用以下代码打印图形边缘的数量:
n1 = nx.number_of_nodes(G)
n2 = nx.number_of_edges(G)
print("nodes: ", n1)
print("edges: ", n2)
并且结果是边缘少于450.为什么我得到这个结果?解析有什么问题吗?
答案 0 :(得分:2)
很难确定,因为你没有提供Minimal, Complete, and Verifiable example,但我认为最可能的解释是相同的边缘被添加两次(可能是节点顺序已切换)
默认情况下,networkx使用无向图。因此,u
- v
边缘和v
- u
边缘是相同的。如果您尝试添加已存在的边缘,它根本不执行任何操作。类似地,不允许从节点到其自身的边缘。要使用其他图表类型,您需要为create_using
设置read_edgelist
选项。