将顶点属性添加到 python 中的加权 igraph Graph
Add vertex attributes to a weighted igraph Graph in python
我正在学习 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-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()
已经生成了一个列表。