to_pandas_adjacency#

to_pandas_adjacency(G, nodelist=None, dtype=None, order=None, multigraph_weight=<built-in function sum>, weight='weight', nonedge=0.0)[source]#

返回图的邻接矩阵作为Pandas DataFrame。

Parameters:
G

用于构造Pandas DataFrame的NetworkX图。

nodelist列表, 可选

行和列根据 nodelist 中的节点顺序排列。 如果 nodelist 为None,则顺序由G.nodes()生成。

multigraph_weight{sum, min, max}, 可选

确定多重图中权重处理方式的运算符。 默认是将多条边的权重相加。

weight字符串或None, 可选

用于边权重的边属性。如果边没有该属性,则使用值1。

nonedge浮点数, 可选

对应于非边的矩阵值通常设置为零。 然而,如果有实际边的值也为零,这可能不合适。 如果需要,可以将非边设置为其他值,例如nan。

Returns:
dfPandas DataFrame

图的邻接矩阵

Notes

对于有向图,条目i,j对应于从i到j的边。

DataFrame的条目被分配给边权重属性。当边没有权重属性时,条目值设置为1。对于多重(平行)边,条目值由’multigraph_weight’参数决定。默认是将每条平行边的权重属性相加。

nodelist 不包含 G 中的每个节点时,矩阵由 G 中由 nodelist 节点诱导的子图构建。

图中自环边的约定是将矩阵对角线条目值分配给边的权重属性(如果没有权重属性,则为1)。如果希望采用边权重加倍的替代约定,可以通过以下方式修改生成的Pandas DataFrame:

>>> import pandas as pd
>>> G = nx.Graph([(1, 1), (2, 2)])
>>> df = nx.to_pandas_adjacency(G)
>>> df
     1    2
1  1.0  0.0
2  0.0  1.0
>>> diag_idx = list(range(len(df)))
>>> df.iloc[diag_idx, diag_idx] *= 2
>>> df
     1    2
1  2.0  0.0
2  0.0  2.0

Examples

>>> G = nx.MultiDiGraph()
>>> G.add_edge(0, 1, weight=2)
0
>>> G.add_edge(1, 0)
0
>>> G.add_edge(2, 2, weight=3)
0
>>> G.add_edge(2, 2)
1
>>> nx.to_pandas_adjacency(G, nodelist=[0, 1, 2], dtype=int)
   0  1  2
0  0  2  0
1  1  0  0
2  0  0  4