我是python的新手。我有一个CSV文件显示距离矩阵,并希望使用CSV中的信息构建一个邻接列表,但我不知道如何执行此任务。
CSV数据集:
我希望距离是边缘的权重。以下是我预期结果的示例:
AdjList = {1: [{Node2:11242, node5:1511}], 2:[{Node6:1024, Node10:985}], etc. }
答案 0 :(得分:0)
不失一般性,以下是KnownFolders.VideoLibrary
和numpy
的解决方案。
结果是嵌套字典,其中外键是行号,内键是列号。
该解决方案可以适应您的问题和所需的输出。您可能希望查看collections.defaultdict
以分别提取行号,列名和数据,以便在以下算法中使用。
pandas
<强>结果强>
from collections import defaultdict
import numpy as np
arr = np.array([[0, 134, 0, 451, 0],
[234, 0, 4513, 0, 0],
[0, 0, 132, 34, 0],
[452, 562, 0, 0, 0]])
d = defaultdict(lambda: defaultdict(int))
for i in range(arr.shape[0]):
for j in range(arr.shape[1]):
val = arr[i, j]
if val != 0:
d[i+1][j+1] = val