2016-04-19 14 views
2

私はpython-igraphを学んでおり、コンポーネント(それらの間に接続されていない)に分割されたグラフを扱うのが難しいです。このグラフでクラスタリングアルゴリズムの1つを適用すると、適切に動作しないように見えるため、アルゴリズムを各サブグラフ(コンポーネント)に別々に適用する必要があります。だから、頂点の識別を維持するために、元のグラフにID番号を与える頂点属性を追加したいと思います。私のグラフはweighted adjacencyマトリックスから構成されています。私はそこvertex attributesを追加する方法でなければなりませんが、私はそれを使用する方法を理解していないことを確認重み付けされたigraphに頂点属性を追加するPythonのグラフ

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

..

答えて

2

をすべての頂点属性を追加します頂点を次のように動作します。

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

あなたはまた、単一の頂点に頂点属性を付けることができます。

G.vs[2]["attr"] = "id3" 
あなたは、単にすべての頂点に固有の識別子が必要な場合

たとえば、あなたはこれを行うことができます:あなたはすでにrange()としてPython 2.xの上にある場合

G.vs["original_id"] = list(range(G.vcount())) 

は(あなたが list()一部を必要としませんリストを生成する)。

関連する問題