2013-06-04 18 views
5

'daki bir kenar özniteliğine göre etkin bir şekilde çıkarılması Bir düğümün listesini belirterek bir NetworkX grafiğinden kolayca bir alt çizge çıkarılabilir, ancak kenar tarafından alt çizgi çıkarma işlemini gerçekleştirmenin verimli bir yolunu bulamadım. Örneğin, alt kağıdın çıkarılması için, kullanıcı tarafından tanımlanan bazı eşikleri aşan ağırlıklar içeren kenarlar oluşur.Bir alt grafiğin NetworkX

Şu anda şu şekilde yapıyorum:

## 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) 

Bunu yapmak için daha iyi bir yolu var mı?

Nazik sorularınız için teşekkürler.

cevap

5

En iyi çözüm gibi görünüyor.

Bellek, Graph.edges_iter() yerine Graph.edges(), ör.

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

Büyük, bellek tasarrufu ipucu için teşekkürler! –

İlgili konular