pycharm用excel文件创建有向图并生成邻接矩阵的代码
时间: 2023-06-08 07:01:36 浏览: 116
首先,需要安装openpyxl库,它是一个用于操作excel文件的第三方库。可以通过在命令行输入“pip install openpyxl”来安装。
接下来,我们需要创建一个excel文件,用于存储图的信息。可以通过pycharm中的菜单栏“File”->“New”->“Excel File”来创建一个excel文件。
在excel文件中,可以创建两个sheet,分别命名为“node”和“edge”。在“node” sheet中,可以填写节点的名称(每一行表示一个节点),在“edge” sheet中,可以填写边的信息(每一行表示一条边,包含起点、终点和权值)。
接下来,我们可以使用openpyxl库中的load_workbook函数来读取excel文件。
import openpyxl
wb = openpyxl.load_workbook('filename.xlsx')
接着,可以通过对“node”和“edge” sheet中的数据进行处理,构建有向图,并生成邻接矩阵。具体代码如下:
import openpyxl
import numpy as np
def create_digraph(filename):
# load excel file
wb = openpyxl.load_workbook(filename)
# get node information
node_sheet = wb['node']
nodes = []
for row in node_sheet.iter_rows(min_row=2, values_only=True):
nodes.append(row[0])
# get edge information
edge_sheet = wb['edge']
edges = {}
for row in edge_sheet.iter_rows(min_row=2, values_only=True):
start = row[0]
end = row[1]
weight = row[2]
if start in edges:
edges[start][end] = weight
else:
edges[start] = {end: weight}
# create adjacency matrix
n = len(nodes)
adjacency_matrix = np.zeros((n, n))
for i in range(n):
for j in range(n):
if nodes[i] in edges and nodes[j] in edges[nodes[i]]:
adjacency_matrix[i][j] = edges[nodes[i]][nodes[j]]
return adjacency_matrix
# test function
filename = 'filename.xlsx'
result = create_digraph(filename)
print(result)
以上代码可以读取excel文件中的内容,构建有向图,并生成邻接矩阵。如果想要更加灵活地处理文件,可以对代码进行适当的修改。
阅读全文