Kontrollera om det finns självloopar i grafen
Som Eric nämnde tillåter NetworkX även kanter som börjar och slutar på samma nod. Det kan verka ovanligt för ett socialt nätverks graf, men det är användbart för att modellera data som ressnätverk, där individer börjar på en plats och slutar på en annan.
Det är bra att kontrollera detta innan du fortsätter med vidare analyser. NetworkX erbjuder en metod för detta ändamål: nx.number_of_selfloops(G).
I den här övningen, liksom i senare övningar, kommer du att ha nytta av assert-satsen. En assert-ion kontrollerar om uttrycket som följer efter den utvärderas till True – annars genereras ett AssertionError.
Börja med att anropa funktionen nx.number_of_selfloops() med T som argument i IPython Shell, för att se hur många kanter som börjar och slutar på samma nod. Ett antal självloopar har lagts till i grafen på konstgjord väg. Din uppgift i den här övningen är att skriva en funktion som returnerar dessa kanter.
Den här övningen är en del av kursen
Introduktion till nätverksanalys i Python
Övningsinstruktioner
- Definiera en funktion som heter
find_selfloop_nodes()och som tar ett argument:G.- Använd en
for-loop för att iterera över alla kanter iG(exklusive metadata). - Om nod
uär lika med nodv:- Lägg till
ui listannodes_in_selfloops. - Returnera listan
nodes_in_selfloops.
- Lägg till
- Använd en
- Kontrollera att antalet självloopar i grafen är lika med antalet noder i självloopar. Det här steget är redan gjort åt dig – klicka på Skicka in svar för att se resultatet!
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Define find_selfloop_nodes()
def ____:
"""
Finds all nodes that have self-loops in the graph G.
"""
nodes_in_selfloops = []
# Iterate over all the edges of G
for u, v in ____:
# Check if node u and node v are the same
if ____:
# Append node u to nodes_in_selfloops
____
return nodes_in_selfloops
# Check whether number of self loops equals the number of nodes in self loops
assert nx.number_of_selfloops(T) == len(find_selfloop_nodes(T))