将顶点属性添加到python中的加权igraph图

Ohm*_*Ohm 3 python graph igraph

我正在学习python-igraph,并且难以处理分为组件(在它们之间没有连接)的图。当我在该图上应用一种聚类算法时,它似乎无法正常工作,因此我需要将算法分别应用于每个子图(组件)。因此,为了保持顶点的标识,我想添加一个顶点属性,该属性在原始图中为我提供ID号。我的图是根据加权邻接矩阵构造的:

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")
Run Code Online (Sandbox Code Playgroud)

我看到应该有一种添加顶点属性的方法,但是我不知道如何使用它。

Tam*_*más 5

将顶点属性添加到所有顶点的工作原理如下:

G.vs["attr"] = ["id1", "id2", "id3", ...]
Run Code Online (Sandbox Code Playgroud)

您还可以将顶点属性附加到单个顶点:

G.vs[2]["attr"] = "id3"
Run Code Online (Sandbox Code Playgroud)

例如,如果仅需要所有顶点的唯一标识符,则可以执行以下操作:

G.vs["original_id"] = list(range(G.vcount()))
Run Code Online (Sandbox Code Playgroud)

list()如果您使用的是Python 2.x,则不需要此部分,因为range()已经生成了列表)。