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

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")

我看到应该有一种方法可以添加 vertex attributes ,但我不明白如何使用它..

最佳答案

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

G.vs["attr"] = ["id1", "id2", "id3", ...]

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

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

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

关于python - 将顶点属性添加到 python 中的加权 igraph Graph,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36713082/

10-15 08:49