python读取txt文件存为邻接矩阵
时间: 2023-09-10 07:05:43 浏览: 164
假设你的txt文件中存储的是一个无向图的边信息,每行两个数字表示一条边的两个端点,那么你可以通过以下代码读取txt文件并生成邻接矩阵:
```python
import numpy as np
# 读取txt文件
with open('graph.txt', 'r') as f:
edges = f.readlines()
# 构建邻接矩阵
n = len(edges) # 图中边的数量
adj_matrix = np.zeros((n, n)) # 初始化邻接矩阵
for i in range(n):
edge = edges[i].strip().split() # 去掉空格并分割每行的两个数字
u, v = int(edge[0]), int(edge[1])
adj_matrix[u][v] = 1 # 标记边的两个端点
adj_matrix[v][u] = 1 # 无向图需要标记双向边
print(adj_matrix)
```
其中,`graph.txt`是存储无向图边信息的txt文件名。这段代码读取txt文件并生成一个n x n的邻接矩阵,其中n是边的数量。邻接矩阵中的元素`adj_matrix[i][j]`表示第i个节点和第j个节点是否有一条边相连,1表示有,0表示没有。注意,在无向图中,邻接矩阵是对称的,即`adj_matrix[i][j] = adj_matrix[j][i]`。
相关问题
python读取邻接矩阵txt文件计算拉普拉斯矩阵并输出
假设你的邻接矩阵文件为`adjacency_matrix.txt`,文件中每一行表示邻接矩阵的一行,行内元素用空格隔开。可以使用以下代码读取邻接矩阵、计算拉普拉斯矩阵并输出:
```python
import numpy as np
# 读取邻接矩阵
adjacency_matrix = np.loadtxt('adjacency_matrix.txt')
# 计算度矩阵
degree_matrix = np.diag(np.sum(adjacency_matrix, axis=1))
# 计算拉普拉斯矩阵
laplacian_matrix = degree_matrix - adjacency_matrix
# 输出拉普拉斯矩阵
print(laplacian_matrix)
```
这段代码中,使用`numpy.loadtxt`函数读取邻接矩阵文件,并存储为一个二维数组`adjacency_matrix`。然后,通过对邻接矩阵的每一行求和,得到每个节点的度,从而计算度矩阵。最后,通过拉普拉斯矩阵的定义$L=D-A$,计算得到拉普拉斯矩阵,并输出。
python读取邻接矩阵txt文件计算最短路径并输出
你可以使用Python中的图论库NetworkX来读取邻接矩阵txt文件并计算最短路径,然后将结果输出到txt文件中。具体步骤如下:
1. 安装NetworkX库:使用pip命令安装NetworkX库,命令如下:
```
pip install networkx
```
2. 读取邻接矩阵txt文件:使用Python中的open函数打开邻接矩阵txt文件,然后使用Python中的split函数将每个数字分离出来,并将它们存储到一个二维列表中。
```
with open('邻接矩阵.txt') as f:
matrix = []
for line in f.readlines():
row = [int(i) for i in line.split()]
matrix.append(row)
```
3. 创建图并计算最短路径:使用NetworkX库中的from_numpy_matrix函数将邻接矩阵转换为图,并使用NetworkX库中的shortest_path函数计算最短路径。
```
import networkx as nx
G = nx.from_numpy_matrix(matrix)
shortest_paths = nx.shortest_path(G)
```
4. 将结果输出到txt文件中:使用Python中的open函数创建一个新的txt文件,并使用Python中的write函数将结果写入到这个txt文件中。
```
with open('最短路径.txt', 'w') as f:
for i in range(len(shortest_paths)):
for j in range(len(shortest_paths)):
f.write(f'{i} -> {j}: {shortest_paths[i][j]}\n')
```
完整代码如下:
```python
import networkx as nx
with open('邻接矩阵.txt') as f:
matrix = []
for line in f.readlines():
row = [int(i) for i in line.split()]
matrix.append(row)
G = nx.from_numpy_matrix(matrix)
shortest_paths = nx.shortest_path(G)
with open('最短路径.txt', 'w') as f:
for i in range(len(shortest_paths)):
for j in range(len(shortest_paths)):
f.write(f'{i} -> {j}: {shortest_paths[i][j]}\n')
```
注意:邻接矩阵txt文件的格式应该是每行代表一个节点,节点之间的数字用空格隔开,如果两个节点之间没有边,则用0表示。
阅读全文
相关推荐
















