2012-08-27 96 views

回答

3

假設通過「添加大量的邊緣在一起」你的意思是「將它們添加到圖」,從help(networkx.Graph)

| **Edges:** 
| 
| G can also be grown by adding edges. 
| 
| Add one edge, 
| 
| >>> G.add_edge(1, 2) 
| 
| a list of edges, 
| 
| >>> G.add_edges_from([(1,2),(1,3)]) 

所以:

>>> import networkx as nx 
>>> g = nx.Graph() 
>>> g.add_edges_from([(0,4),(1,2),(2,3)]) 
>>> g 
<networkx.classes.graph.Graph object at 0x1004b58d0> 
>>> g.edges() 
[(0, 4), (1, 2), (2, 3)] 

我肯定會推薦養成閱讀交互式文檔的習慣。我使用的是IPython,所以我只需要快速查看可用的方法即可製作圖形g,然後鍵入g.[TAB]。這提出了一個清單,g.add_edges_from是#3。

OTOH,如果你只是想添加邊的兩個列表放在一起,你也可以這樣做:

>>> g0.edges() + g1.edges() 
[(1, 2), (2, 3), (3, 4), (1, 2), (2, 3), (3, 4), (5, 6)] 
>>> set(g0.edges() + g1.edges()) 
set([(1, 2), (3, 4), (5, 6), (2, 3)]) 
+0

讓我解釋一下我的困境,我有這樣的 列表= [1.1,1.2,1.3,1.4,1.5], [2.1,2.2的列表, 2.3,3.4,2.5], [3.1,3.2,3.3,3.4,3.5], [4.1,4.2,4.3,4.4,4.5], [5.1,5.2,5.3,5.4,5.5]] 並且如果我想創建邊緣,如1.1 - 1.2 - 1.3 .. 2.1 - 2.2 - ..等等 什麼是使用現有列表的最好方法。 –

+0

請編輯一個較小且完整的示例 - 包含您想要的每一條邊 - 進入您的主要問題。我無法從你的例子中得知1.5是否有優勢。 – DSM

+0

我已經發布了這個鏈接的問題。謝謝很多幫助:) http://stackoverflow.com/questions/12143178/list-conversion –

0

通常的圖形數據存儲在一個文件,這使得它很容易與熊貓據幀閱讀。例如,考慮構建一個seventh grader network的圖。我們可以初始化我們的圖形如下:

import pandas as pd 
import networkx as nx 

#read the edge list 
edges = pd.read_csv('./data/moreno_seventh/out.moreno_seventh_seventh', skiprows=2, sep = " ", header=None) 
edges.columns = ['student1', 'student2', 'count'] 

#read node metadata 
meta =pd.read_csv('./data/moreno_seventh/ent.moreno_seventh_seventh.student.gender', header=None) 
meta.index += 1 
meta.columns = ['gender'] 

#construct the graph 
G = nx.DiGraph() 
for row in edges.iterrows(): 
    G.add_edge(row[1]['student1'], row[1]['student2'], count=row[1]['count']) 

#add meta data 
for i in G.nodes(): 
    G.node[i]['gender'] = meta.ix[i]['gender']