2011-12-20 13 views
11

मैंने नेटवर्कक्स में ग्राफ निर्देशित किया है। मैं केवल उन नोड्स को रखना चाहता हूं जिनमें दो या दो से अधिक आउटगोइंग किनारों या कोई आउटगोइंग एज नहीं है। मैं यह कैसे करु?नेटवर्क + ग्राफ में नोड्स को केवल 2+ आउटगोइंग किनारों या 0 आउटगोइंग किनारों के साथ कैसे रखें?

या

मैं कैसे नोड्स जो एक networkx ग्राफ में ठीक एक निवर्तमान बढ़त हासिल है निकालता है है।

+4

यदि आप सेंट करते हैं एक ग्राफ के साथ कला, उन नोड्स को ढूंढें जिनमें एक आउटगोइंग एज है, और फिर उनको हटा दें, आप एक नया ग्राफ बना सकते हैं जिसमें अभी भी एक आउटगोइंग किनारे वाला नोड है (कहें कि इसमें पहले दो थे और शामिल नोड्स में से एक हटा दिया गया था।) आप उस मामले में क्या करना पसंद करेंगे? – DSM

उत्तर

17

आप out_degree विधि का उपयोग कर एक निवर्तमान बढ़त के साथ ग्राफ G में नोड्स पा सकते हैं:

outdeg = G.out_degree() 
to_remove = [n for n in outdeg if outdeg[n] == 1] 

निकाला जा रहा है तो यह है:

G.remove_nodes_from(to_remove) 

आप एक नया ग्राफ़ बनाने के लिए के बजाय संशोधित पसंद करते हैं मौजूदा ग्राफ में, एक सबग्राफ बनाएं:

to_keep = [n for n in outdeg if outdeg[n] != 1] 
G.subgraph(to_keep) 
+0

उन नोड्स को हटाने के बाद, क्या आउट-डिग्री बदल जाएगी? – user3341953

संबंधित मुद्दे