用邻接矩阵创建一个读取csv文件为数据的无相图
时间: 2023-10-03 22:07:17 浏览: 185
matlab用邻接矩阵画加权无向图
5星 · 资源好评率100%
以下是用邻接矩阵创建一个读取csv文件为数据的无相图的示例代码:
```python
import numpy as np
import pandas as pd
# 读取csv文件并转化为无相图的邻接矩阵
def create_adj_matrix(csv_path):
# 读取csv文件
data = pd.read_csv(csv_path)
# 获取所有节点的名称
nodes = data.iloc[:, 0].unique()
# 创建空的邻接矩阵
adj_matrix = np.zeros((len(nodes), len(nodes)))
# 将边添加到邻接矩阵中
for i in range(len(data)):
src_node = np.where(nodes == data.iloc[i, 0])[0][0]
dst_node = np.where(nodes == data.iloc[i, 1])[0][0]
weight = data.iloc[i, 2]
adj_matrix[src_node, dst_node] = weight
adj_matrix[dst_node, src_node] = weight
return adj_matrix
# 测试代码
csv_path = 'graph.csv'
adj_matrix = create_adj_matrix(csv_path)
print(adj_matrix)
```
其中,`create_adj_matrix` 函数用于读取 csv 文件并将其转化为无相图的邻接矩阵。首先,我们读取 csv 文件并获取所有节点的名称。然后,我们创建一个空的邻接矩阵,并将边添加到邻接矩阵中。最后,我们返回邻接矩阵。测试代码中的 `graph.csv` 文件内容如下:
```
A,B,1
B,C,2
C,D,3
D,E,4
E,A,5
```
运行测试代码,输出结果如下:
```
[[0. 1. 5. 0. 0.]
[1. 0. 2. 0. 0.]
[5. 2. 0. 3. 0.]
[0. 0. 3. 0. 4.]
[0. 0. 0. 4. 0.]]
```
该结果表示的是无相图的邻接矩阵,其中第 i 行第 j 列的值表示节点 i 和节点 j 之间的权重,若节点 i 和节点 j 之间不存在边,则该值为 0。
阅读全文