我的数据格式如下:
eventid mnbr
20 1
26 1
12 2
14 2
15 3
14 3
10 3
eventid是一个成员参加数据的事件被表示为一个小组,因此您可以看到每个成员参加多个活动,多个成员可以参加同一个活动 . 我的目标是创建一个邻接矩阵,显示:
mnbr 1 2 3
1 1 0 0
2 0 1 1
3 0 1 1
只要两名成员参加同一活动,就会有1 . 我成功地将csv文件的列读入2个独立的1D numpy数组 . 然而,在这里,我不确定如何继续 . 如何使用第2列创建矩阵,以及如何使用第1列填充值?我知道我没有发布任何代码,并且不期望在这方面有任何解决方案,但会非常感谢如何以有效的方式解决问题 . 我有大约300万个观测值,因此创建太多外部变量会有问题 . 提前致谢 . 我收到一条通知,说我的问题可能是重复的,但我的问题是解析数据而不是创建邻接矩阵 .
1 回答
这是一个解决方案 . 它不直接为您提供所请求的邻接矩阵,而是为您提供自己创建它所需的内容 .
执行此代码会产生以下结果:
这是一个字典,其中每个
mnbr
都有一组相关的邻接mnbrs
. 这实际上是一个邻接列表,它是一个压缩的邻接矩阵 . 您可以使用字典键和值作为行和列索引来扩展它并构建您请求的矩阵 .希望它有所帮助 . 亚瑟 .
编辑:我提供了一种使用邻接列表的方法,让您实现自己的邻接矩阵构建 . 但是,如果数据稀疏,您应该考虑真正使用此数据结构 . 见http://en.wikipedia.org/wiki/Adjacency_list
编辑2:添加代码以将adjacencyList转换为一个小的智能adjacencyMatrix
此代码提供以下结果: