2016-01-20 69 views
-2
import networkx as nx 
import itertools 
import numpy as np 
import os 
import sys 
import pylab as pl 

g = nx.read_edgelist('/home/suman/Desktop/dataset/Email-Enron.txt', 
        create_using=None, nodetype=int, edgetype=int) 

n = nx.number_of_nodes(g) 

print n 
+1

選擇一些[random](https://docs.python.org/2/library/random.html#random.sample)節點並[刪除它們](https://networkx.github.io/documentation/最新/ reference/generated/networkx.Graph.remove_nodes_from.html) – yurib

+2

你好,歡迎來到SO。你有什麼嘗試? – Kikohs

+0

我試圖從網絡數據集中刪除10%的節點,然後在刪除節點後生成新的邊界列表,然後計算出相應的cofficient。如何選擇ramdom節點(如10%noes)並將其刪除?這裏節點總數n = 36692 –

回答

0

這裏是一個可能的解決方案,對數據的小樣本做:

import networkx as nx 
import random 

G = nx.Graph() 

G.add_edges_from([(1,2),(1,3),(3,4),(4,5)]) 

ListOfNodes = G.nodes() 
NumberofNodes = G.number_of_nodes() 

這將返回爲G.nodes()

ListOfNodes = [1, 2, 3, 4, 5] 

要從採取然後定義節點的樣本你的圖中的節點總數爲 (這裏是3,在你的情況下你可以設置樣本int(NumberofNodes*0.1)

sample = 3 
RandomSample = random.sample(ListOfNodes, sample) 

那麼你就可以從你的圖表取出樣品節點:

G.remove_nodes_from(RandomSample) 

回調到G.nodes()你獲得:

[1, 4, 5] 

編輯: 存在這樣的問題與RandomSample = random.sample(ListOfNodes, sample)因爲networkx開始節點從1開始編號。現在它應該可以正常工作,直接從節點列表中選擇一個隨機的節點sample

+0

謝謝你,但這裏有一個錯誤occour AttributeError:'模塊'對象沒有'random'屬性。 –

+0

您是否隨機導入? –

+0

是啊,我隨機導入。但也是這個錯誤。還有一個問題是如何從nodelist中刪除前10個節點? –