语言:Python 2.x 软件包:Networkx、Numpy
我的代码从图表中随机选取一个节点,然后执行以下操作:
1-如果它是一个隔离,回到while循环的开头,然后随机选择另一个节点
如果它不是孤立的,找它的邻居
3-如果它只有一个邻居,那么随机选取的邻居就是唯一的邻居
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)
File "D:\network.py", line 108, in triadic_method random_neighb = numpy.random.choice(Neighbs) File "mtrand.pyx", line 1121, in mtrand.RandomState.choice (numpy\random\mtrand\mtrand.c:12473) File "mtrand.pyx", line 945, in mtrand.RandomState.randint (numpy\random\mtrand\mtrand.c:10732) ValueError: low >= high
错误引用的第108行是:
随机分布=数字随机选择(Neighbs)这是错误引用的第108行
您看到的ValueError来自
numpy.random.randint
,当'low'和'high'输入顺序不正确时,该错误就会出现。很难理解你为什么会出错。假定choice
函数正在调用randint
,参数基于输入Neighbs
的特性。在我会在打电话之前打印Neighbs的值,看看你到底在要求它做什么。在
这可能是因为您正在使用定向网络。在有向网络中,非孤立节点可能没有邻居。例如,有两个节点a,b和从a到b的一条边,a和b都不孤立,a将有邻居b,但b没有邻居。在
NetworkX将isolated定义为没有传入和传出的边缘,但是邻居没有引用前导。在
如果你应用np.随机选择在一个空列表中,您将得到这里所述的错误。在
相关问题 更多 >
编程相关推荐