python-igraph中是否有这样的功能(或者networkx,所以我可以调整它以在igraph中工作),还是我必须实现它?
如果它还不存在,我会像这样花费它:
- 获取源节点的入射边,
- 只保留符合属性条件的边(例如,只保留属性为“major”的边)
- 对于 2. 中的边,使用边的 target 属性找到目标节点,如此处所述
欢迎任何改进!
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 可调用的,它接受一条边并返回是否可以接受该边。
尝试列表理解。
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]