簡體   English   中英

將鄰接矩陣作為圖 object 存儲在 Python 中

[英]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 的格式為每個節點命名,您可能需要使用indexcolumns屬性來自定義索引。

將圖形轉換為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')

graph_with_node_labels (

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM