9

igraph のソースとターゲットに基づいてエッジを選択/削除する簡単な方法はありますか?

私が使っているのは基本的に

g.es["source"] = [e.source for e in g.es]
g.es["target"] = [e.target for e in g.es]    
g.es["tuple"]  = [e.tuple  for e in g.es]        

g.es.select(target=root)

しかし、ソース/ターゲット情報を2回保存せずにそれを行う方法があるべきだと思います.

4

2 に答える 2

13

Just use _source=whatever and _target=whatever as keyword arguments to select, e.g.:

g.es.select(_source=root)

Alternatively, you can use the incident method of the graph, which gives you a list of edge IDs instead of a filtered EdgeSeq if that is better for your purposes:

g.incident(root, mode="out")
于 2013-01-30T09:27:27.873 に答える
2

ところで、「タプル」の場合は、次を使用します_between

g.es.find(_between=((source_id,), (target_id,)))

奇妙に見えます -selectの代わりにを使用findし、複数のインデックスを持つタプルを渡すと、実際には単一のエッジではなくエッジのリストが取得されます。ただし、単一のエッジの場合、開始と終了のタプルを渡す必要があります。

_sourceこれは、との組み合わせを使用するよりも何らかの理由で (3 桁も高速です!) 高速です_targetが、まったく同じ情報が得られます。

于 2014-01-23T14:17:18.950 に答える