在Python中为加权的igraph图添加顶点属性

4
我正在学习python-igraph,并且在处理一个被分成多个组件(它们之间不相互连接)的图形时遇到了困难。当我在这个图形上应用其中一个聚类算法时,似乎它不起作用,所以我需要将算法分别应用于每个子图(组件)。为了保持顶点的标识,我想添加一个顶点属性,用于给出原始图中的id编号。我的图形是由加权邻接矩阵构建而成:weighted adjacency matrix。
import numpy as np
import igraph

def symmetrize(a):
    return a + a.T - 2*np.diag(a.diagonal())

A = symmetrize(np.random.random((100,100)))

G = igraph.Graph.Adjacency(A.tolist(),attr="weight",mode="UPPER")

我看到应该有一种方法可以添加顶点属性,但我不理解如何使用它。请参考这里了解更多信息。
1个回答

6
将一个顶点属性添加到所有顶点的方法如下:
G.vs["attr"] = ["id1", "id2", "id3", ...]

您也可以将顶点属性附加到单个顶点:
G.vs[2]["attr"] = "id3"

例如,如果你只需要为所有顶点生成唯一标识符,则可以这样做:
G.vs["original_id"] = list(range(G.vcount()))

如果你使用 Python 2.x,那么你不需要 list() 部分因为 range() 已经生成了一个列表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接