python两列数据生成邻接矩阵_从csv数据在python中创建邻接矩阵

这里有一个解决方案。它不直接给你所要求的邻接矩阵,但给你你自己创建它所需要的。在#assume you stored every line of your input as a tuples (eventid, mnbr).

observations = [(20, 1), (26, 1), (12, 2), (14, 2), (15,3 ), (14, 3), (10, 3)]

#then creates an event link dictionary. i.e something that link every event to all its mnbrs

eventLinks = {}

for (eventid, mnbr) in observations :

#If this event have never been encoutered then create a new entry in links

if not eventid in eventLinks.keys():

eventLinks[eventid] = []

eventLinks[eventid].append(mnbr)

#collect the mnbrs

mnbrs = set([mnbr for (eventid, mnbr) in observations])

#create a member link dictionary. This one link a mnbr to other mnbr linked to it.

mnbrLinks = { mnbr : set() for mnbr in mnbrs }

for mnbrList in eventLinks.values() :

#add for each mnbr all the mnbr implied in the same event.

for mnbr in mnbrList:

mnbrLinks[mnbr] = mnbrLinks[mnbr].union(set(mnbrList))

print(mnbrLinks)

执行此代码将得到以下结果:

^{pr2}$

这是一个字典,其中每个mnbr都有一组相关的邻接mnbrs。这实际上是一个邻接列表,它是一个压缩的邻接矩阵。您可以扩展它并使用字典键和值作为行和列索引来构建您所请求的矩阵。在

希望能有所帮助。

亚瑟。在

编辑:我提供了一种使用邻接列表的方法,让您实现自己的邻接矩阵构建。但您应该考虑真正使用这种数据结构,以防数据稀疏。见http://en.wikipedia.org/wiki/Adjacency_list

编辑2:添加一个代码来将adjacencyList转换为一个小的智能adjacencyMatrix

^{3}$

此代码给出以下结果:mbr 1 2 3

1 1 0 0

2 0 1 1

3 0 1 1

m.areAdjacent(1,2) : False

m.areAdjacent(2,3) : True

你可能感兴趣的:(python两列数据生成邻接矩阵_从csv数据在python中创建邻接矩阵)