【问题标题】:Storing adjacency matrix as graph object in Python在Python中将邻接矩阵存储为图形对象
【发布时间】:2020-12-10 17:23:12
【问题描述】:

我有具有邻接方阵的网络数据,但没有包含任何键(没有包含人员的标识符)。

如何使用 networkx 包将我的邻接矩阵(csv 文件)存储为图形对象?

【问题讨论】:

    标签: python networkx


    【解决方案1】:

    要将您的矩阵存储为 csv 格式,我认为您应该先将其转换为 pandas DataFrame。为此,您可以参考此https://networkx.org/documentation/stable//reference/generated/networkx.convert_matrix.to_pandas_adjacency.html#networkx.convert_matrix.to_pandas_adjacency .请注意,如果您想在 DataFrame 格式下为每个节点命名,您可能需要使用 indexcolumns 属性来自定义索引。

    将graph转换成pandasDataFrame后,可以使用to_csv导出。

    【讨论】:

      【解决方案2】:

      有几种方法可以将您的邻接矩阵从 csv 格式转换为图形对象,但在我看来,最直接的方法是使用 pandas 加载邻接矩阵,然后直接从 pandas 数据框对象创建一个图形:

      # Example 3x3 adjacency matrix in csv file:
      
      # 0  1  0
      # 1  0  1
      # 0  1  0
      
      import networkx as nx
      import pandas as pd
      
      adjmat_df = pd.read_csv('adjmat.csv',header=None)
      
      # This gives us the following dataframe:
      #    0  1  2
      # 0  0  1  0
      # 1  1  0  1
      # 2  0  1  0
      
      # Create networkx graph object
      G = nx.from_pandas_adjacency(adjmat_df)
      
      print(nx.info(G))
      # Name: 
      # Type: Graph
      # Number of nodes: 3
      # Number of edges: 2
      # Average degree:   1.3333
      
      nx.draw_shell(G, with_labels=True, alpha=0.7, font_size=15, node_size=500, node_color='r')
      

      如果您有想要使用的节点标签,您只需将 pandas 数据框的列和索引设置为节点标签列表:

      node_labels = ['A','B','C']
      adjmat_df.columns = node_labels
      adjmat_df.index = node_labels
      
      G = nx.from_pandas_adjacency(adjmat_df)
      nx.draw_shell(G, with_labels=True, alpha=0.7, font_size=15, node_size=500, node_color='r')
      

      【讨论】:

        猜你喜欢
        • 2021-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-13
        • 1970-01-01
        • 1970-01-01
        • 2022-11-16
        • 1970-01-01
        相关资源
        最近更新 更多