【发布时间】:2016-04-26 16:37:30
【问题描述】:
语言:Python 2.x 包:Networkx、Numpy
我的代码从我的图表中选择一个随机节点,然后执行以下操作:
1- 如果是隔离,则返回 while 循环的开头并选择另一个随机节点
2- 如果不是孤立的,则获取它的邻居
3 - 如果它只有 1 个邻居,那么您选择的随机邻居就是唯一的邻居
4-如果它有多个邻居,则从可用选项中随机选择一个邻居
5- 随机选择,检查 它 是否有邻居。就像上面一样.. 如果它有一个而不是将邻居的邻居设置为那个邻居
6-如果它有多个,则选择邻居的随机邻居
7-将我邻居的邻居连接到我(原来的随机节点)
这段代码一直有效,直到我在程序的另一部分中引入了一些小改动。我知道所有语法都有效,但我根本无法通过错误。下面是我的代码和错误。
while i <= self.iterations:
node_list = nx.nodes(self.origin_network)
random_node = numpy.random.choice(node_list)
#print (" This random node has no neighbors:", self.origin_network.neighbors(random_node))
if nx.is_isolate(self.origin_network, random_node) == True:
i += 1
print (" This random node has no neighbors:", self.origin_network.neighbors(random_node), "on turn", i)
continue
else:
Neighbs = self.origin_network.neighbors(random_node)
if len(Neighbs) == 1:
print ("The neighbor has no additional neighbors", "on turn", i)
random_neighb = Neighbs
else:
random_neighb = numpy.random.choice(Neighbs) ***#This is line 108 which the error references***
neighbs_of_neighb = self.origin_network.neighbors(random_neighb)
if len(neighbs_of_neighb) == 1:
print ("This neighbor has only the original neighbor on turn", i)
random_NofN = neighbs_of_neighb
self.origin_network.add_edge(random_node, random_NofN)
else:
random_NofN = numpy.random.choice(neighbs_of_neighb)
self.origin_network.add_edge(random_node, random_NofN)
print "success"
i += 1
我收到的错误是:
self.triadic_method(self.origin_network , iteration, sim_number)文件“D:\network.py”,第 108 行,在 triadic_method 中 random_neighb = numpy.random.choice(邻居) 文件“mtrand.pyx”,第 1121 行,在 mtrand.RandomState.choice (numpy\random\mtrand\mtrand.c:12473) 文件“mtrand.pyx”,第 945 行,在 mtrand.RandomState.randint (numpy\random\mtrand\mtrand.c:10732) 值错误:低 >= 高
错误引用的第 108 行是这一行:
random_neighb = numpy.random.choice(Neighbs) #这是错误引用的第 108 行
【问题讨论】:
-
我对这条线感到困扰:
random_neighb = Neighbs因为我认为您希望random_neighb成为一个节点,而Neighbs是一个列表(此处包含一个节点)。不应该是random_neighb = Neighbs[0]吗? -
难道不是单个对象与单个项目相同吗?列出我的编码方式?
-
我不这么认为。
a != [a]. -
hmm.. 好吧,它没有引发错误并且似乎正在工作,所以我认为另一个错误正在覆盖这个错误!显然,两个错误可以使一个正确..lol
标签: python python-2.7 numpy random networkx