2016-01-20 39 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个节点? –