我具有CSV格式边缘的大向图(〜14GB)表示为以下列格式的整数:有效的算法来找到所有顶点两步骤邻居有向图
node1,node2
3213741,23521361
3213741,6532710
3213741,12340611
3213741,6457392
3213741,9682135
6567133,12956771
6567133,2386
node1
是边缘开始,node2
是边缘结束的地方。边缘按node1
分组(可按node2
分组)。
我需要为所有节点生成两步邻居。这是按以下格式:
node1,node2,node3
3213741,6532710,5347128
我的想法是让边缘的副本,并通过节点2排序,这样有两个表t1.node1,t1.node2
和t2.node1,t2.node2
,然后以某种方式连接这两个表时t1.node1 == t2.node1
和t1.node1 != t2.node2
。但是这看起来太慢了。有没有更好的算法或算法可以利用数据按node1
分组的事实?我更喜欢Numpy。谢谢。
这在SQL中会相当简单。既然你已经在csv中拥有了它,你可以导入到关系数据库并对其运行查询。 – mba12
没有帮助实际的问题,但你可能想看看[h5py](http://docs.h5py.org/en/latest/)来保存你的数据。这可以节省大量空间并大大加快加载/节省。 – obachtos