2013-06-04 9 views
5

में कुछ किनारे विशेषता के अनुसार उप-अनुच्छेद का कुशल निष्कर्षण कोई नोड्स की सूची निर्दिष्ट करके नेटवर्कएक्स ग्राफ़ से एक सबग्राफ निकालने में आसानी से निकाला जा सकता है, लेकिन मुझे किनारे से सबग्राफ निष्कर्षण निष्पादित करने का कोई प्रभावी तरीका नहीं मिला। उदाहरण के लिए, उपग्राफ निकालने के लिए किनारों के किनारों के साथ कुछ उपयोगकर्ता परिभाषित थ्रेसहोल्ड से अधिक भार होते हैं।नेटवर्कएक्स

वर्तमान में मैं यह निम्नलिखित तरीके से कर रहा हूँ:

## extracts all edges satisfy the weight threshold (my_network is directed): 
eligible_edges = [(from_node,to_node,edge_attributes) for from_node,to_node,edge_attributes in my_network.edges(data=True) if edge_attributes['weight'] > threshold] 
new_network = NetworkX.DiGraph() 
new_network.add_edges_from(eligible_edges) 

वहाँ यह करने के लिए एक बेहतर तरीका है?

आपके तरह के उत्तरों के लिए धन्यवाद।

उत्तर

5

यह सबसे अच्छा समाधान की तरह दिखता है।

आप Graph.edges() के बजाय Graph.edges_iter() का उपयोग कर स्मृति को सहेज सकते हैं, उदा।

>>> G = nx.DiGraph(((source, target, attr) for source, target, attr in my_network.edges_iter(data=True) if attr['weight'] > threshold)) 
+0

ग्रेट, स्मृति बचत युक्ति के लिए धन्यवाद! –

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