[英]Storing adjacency matrix as graph object in Python
我有具有鄰接方陣的網絡數據,並且沒有包含鍵(沒有包含人員的標識符)。
如何使用 networkx package 將我的鄰接矩陣(csv 文件)存儲為圖形 object?
要將矩陣存儲為 csv 格式,我認為您應該首先將其轉換為pandas
DataFrame。 為此,您可以參考此https://networkx.org/documentation/stable//reference/generated/networkx.convert_matrix.to_pandas_adjacency.html.networkx.convert_matrix.to_pandas_adjacency 。 請注意,如果您想以 DataFrame 的格式為每個節點命名,您可能需要使用index
或columns
屬性來自定義索引。
將圖形轉換為pandas
DataFrame 后,可以使用to_csv
導出。
There are several ways to get your adjacency matrix from csv format into a graph object, but the most straightforward, in my opinion, is to load the adjacency matrix using pandas, and then directly create a graph from the pandas dataframe object:
# 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 dataframe 的列和索引設置為節點標簽列表:
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')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.