0

python-igraph(またはnetworkxでもあるので、igraphで動作するように適応させることができます)で事前に作成されたそのような関数はありますか、それとも実装する必要がありますか?

まだ存在しない場合は、次のように支出します。

  1. ソース ノードのインシデント エッジを取得し、
  2. 属性基準を満たすエッジのみを保持します (たとえば、属性が「major」のエッジのみ)
  3. 2. のエッジについては、こちらで説明されているように、エッジのターゲット プロパティを使用してターゲット ノードを見つけます。

どんな改善でも大歓迎です!

4

2 に答える 2

3

igraph にはこのための既製の関数はありませんが、次のようなものを試すことができます。

def filtered_neighbors(graph, node, condition):
    return [ \
        edge.source if edge.target == node else edge.source \
        for edge in graph.es[graph.incident(node)] \
        if condition(edge)
    ]

conditionエッジを受け取り、エッジが受け入れられるかどうかを返す Python 呼び出し可能オブジェクトでなければなりません。

于 2015-07-11T12:28:25.473 に答える
1

リスト内包表記を試してください。

import networkx as nx
G = nx.Graph()
G.add_edge(1,2,weight=3)
G.add_edge(1,3,weight = 5)
node = 1
weight3_neighbors = [neighbor for neighbor in G.neighbors_iter(node) if G.edge[node][neighbor]['weight']==3]

weight3_neighbors
> [2]
于 2015-07-09T09:24:09.267 に答える