グリッドグラフがあり、そのエッジはタプルのタプルのリストであり、ノードを表します。
G.edges = [((0, 0), (1, 0)), ..., ((15, 14), (15, 15))]
さらに、各要素には重みがあります。
G[(0,1)][(0,2)] = {'weight': 0.59}
G.edgesを重みで並べ替えるにはどうすればよいですか?で色々試してみkey=lambda
ましたが、今のところうまくいきません。
再現性のために、完全なコードは次のとおりです。
from networkx import grid_graph
field_shape = (16, 16)
G = grid_graph(dim=list(field_shape))
edge_weights = np.array([[e, random.rand()] for e in G.edges()]) # shape (nb_edges, 2)
for e, weight in edge_weights:
G[e[0]][e[1]]['weight'] = weight # Adds weights to all edges ((G[(0,1)][(0,2)]) = {'weight': 0.59})
nodes = [n for n in G.nodes()]
次に例を示します。
from networkx import grid_graph
import numpy as np
field_shape = (2, 2)
G = grid_graph(dim=list(field_shape))
edge_weights = np.array([[e, np.random.rand()] for e in G.edges()]) # shape (nb_edges, 2)
for e, weight in edge_weights:
G[e[0]][e[1]]['weight'] = weight # Adds weights to all edges ((G[(0,1)][(0,2)]) = {'weight': 0.59})
nodes = [n for n in G.nodes()]
for edge in G.edges():
print(f"{edge[0]} -> {edge[1]} = {G[edge[0]][edge[1]]['weight']}")
print()
sorted_edges = sorted(G.edges(), key=lambda edge: G[edge[0]][edge[1]]['weight'])
for edge in sorted_edges:
print(f"{edge[0]} -> {edge[1]} = {G[edge[0]][edge[1]]['weight']}")
出力:
(0, 0) -> (1, 0) = 0.7516163148696177
(0, 0) -> (0, 1) = 0.25352872203948684
(0, 1) -> (1, 1) = 0.7781608787306042
(1, 0) -> (1, 1) = 0.08342751486451083
(1, 0) -> (1, 1) = 0.08342751486451083
(0, 0) -> (0, 1) = 0.25352872203948684
(0, 0) -> (1, 0) = 0.7516163148696177
(0, 1) -> (1, 1) = 0.7781608787306042
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加