Sprache: Python 2.x Pakete: NetworkX, NumpyMit Python NetworkX und Numpy.Choice & Anfahrt Valueerror
nimmt Mein Code einen zufälligen Knoten aus meinem Graph dann macht folgendes:
1- wenn es ist ein Isolat, zu Beginn der while-Schleife zurückgehen und eine anderen Zufallsknoten wählt
2-, wenn es nicht ein Isolat ist, es Nachbarn
3 erhalten - wenn es nur ein Nachbarn hat dann den zufälligen Nachbarn Sie wählen, ist das nur n eighbor
4-wenn es mehr als ein Nachbarn hat, dann wählen Sie einen zufälligen Nachbarn aus den Möglichkeiten zur Verfügung
5-, dass zufällige Wahl, um zu sehen, ob es Nachbarn hat. Nur oben wie .. wenn es eine als gesetzt den Nachbarn Nachbarn muss sein, dass ein Nachbar
6-wenn es mehr als man dann einen zufälligen Nachbarn von Nachbarn holen hat
7- den Nachbarn meines verbinden Nachbar zu mir (der ursprüngliche Zufallsknoten)
Dieser Code HABE gearbeitet, bis ich einige kleinere Änderungen in einem anderen Teil meines Programms eingeführt habe. Ich weiß, dass die ganze Syntax funktioniert, aber ich kann einfach den Fehler nicht bestehen. Unten ist mein Code und der Fehler.
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
Der Fehler I erhalten ist:
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
Leitung 108, die den Fehler Referenzen ist dieses:
random_neighb = numpy.random.choice (Neighbs) #Dies Linie 108 der Fehler verweist auf
Mich stört diese Zeile: 'random_neighb = Neighbors', weil ich glaube, dass' random_neighb' ein Knoten sein soll, während 'Neighbors' eine Liste ist (hier mit einem einzelnen Knoten).Sollte es nicht 'random_neighb = Neighbours [0]' sein? – Joel
Wäre nicht ein einzelnes Objekt das gleiche wie ein einzelnes Objekt, listet es auf, wie ich es codiert habe? – Joseph
Ich glaube nicht. 'a! = [a]'. – Joel