我有一个文本文件,它是一个边缘列表文件。我知道如何读取该文件(使用Canopy Enthought),但我不知道如何获取所需的关于图形的信息。
主要问题:是否有一种方法可以使用networkx命令检测这个从边缘列表文件创建的图形是有向的还是无向的?或者仅仅是加权或未加权?
主要问题:是否有一种方法可以使用networkx命令检测这个从边缘列表文件创建的图形是有向的还是无向的?或者仅仅是加权或未加权?
G = nx.Graph()
,那么如果文件中的节点对被重复出现,它们之间仍将有一条边,节点的顺序无关紧要; ((node1,node2) 等同于 (node2,node1))。而如果你将图创建为 G = nx.DiGraph()
,则节点的顺序很重要。此外,如果指定了 G = nx.MultiGraph()
,则在重复的情况下将存在多条边。当读取边列表文件时,G = nx.MultiDiGraph()
将产生不同的结果。因此,请查看图类型文档以了解所需类型。
要检查图是否是有向的,可以使用
nx.is_directed(G)
,可以在这里找到文档。
要检查图是否带权重
没有特定的类型来表示图是否具有加权边缘。但是,可以通过检查边是否包含名为weight的属性来查看权重,如此处所述。可以通过以下方式完成:'weight' in G[1][2] # Returns true if an attribute called weight exists in the edge connecting nodes 1 and 2.