igraph에 NetworkX 그래프로 변환하는 두 가지 방법 :
In [5]: g = nx.planted_partition_graph(50, 50, 0.9, 0.1, seed=3)
In [6]: %timeit ig.Graph(len(g), zip(*zip(*nx.to_edgelist(g))[:2]))
1 loops, best of 3: 264 ms per loop
In [7]: %timeit ig.Graph.Adjacency((nx.to_numpy_matrix(g) > 0).tolist())
1 loops, best of 3: 496 ms per loop
사용 : 에지리스트 빨리 다음 2500 노드 그래프 내 컴퓨터에 다소이었다 사용
import networkx as nx, igraph as ig
# create sample NetworkX graph
g = nx.planted_partition_graph(5, 5, 0.9, 0.1, seed=3)
# convert via edge list
g1 = ig.Graph(len(g), zip(*zip(*nx.to_edgelist(g))[:2]))
# nx.to_edgelist(g) returns [(0, 1, {}), (0, 2, {}), ...], which is turned
# into [(0, 1), (0, 2), ...] for igraph
# convert via adjacency matrix
g2 = ig.Graph.Adjacency((nx.to_numpy_matrix(g) > 0).tolist())
assert g1.get_adjacency() == g2.get_adjacency()
을 가장자리 목록도 g = nx.complete_graph(2500)
의 경우 다소 빨랐습니다.
G = nx.from_edgelist([(names[x[0]], names[x[1]])
for names in [g.vs['name']] # simply a let
for x in g.get_edgelist()], nx.DiGraph())
:
빠른 답변을 주신 Andrew에게 감사드립니다. iGraph에서 NetwrokX 그래프의 위상 구조 만 재구성하는 것은 상당히 사소한 것으로 나타났습니다. 까다로운 부분은 노드 및 가장자리 속성이었습니다. 그러나 이것은 커뮤니티 탐지를 위해 충분할 것입니다 : –