首页 > 解决方案 > 如何在 python-igraph 中删除边缘属性

问题描述

我想从python-igraph. 等效的 igraph R 函数被巧妙地调用delete_edge_attr。我无法在 Python 中找到等效的函数/方法……有吗?

如果没有,还有其他方法吗?(我尝试了一个简单的方法g.es['edge_attr']= [],但这不起作用)。

示例代码

g = ig.Graph.Tree(10, 2)        #Generate random graph
g_betweenness = g.betweenness() #Calculate betweenness for graph
g['betweenness'] = betweenness  #Assign betweenness as edge attribute
print(g.attributes())
g['betweenness'] = []           #Attempt to remove betweenness edge attribute (incorrect)
print(g.attributes())

输出

['betweenness']
['betweenness']

期望的输出

['betweenness']
[]

标签: pythonpython-3.xigraph

解决方案


您可能无法将其设置为空数组,但您对直接更改的直觉EdgeSequence已经相当不错了。您可以简单地使用 Python 的 internal 删除参数del(),我在下面提供了一个最小示例:

import igraph
# minimal graph
G = igraph.Graph()
G.add_vertices(2)
G.add_edge(0,1)

# add your property
G.es['betweenness'] = [1]

# print edge attribute (note the difference to your example)
print(G.es.attribute_names())
# output: ['weight']

# delete argument
del(G.es['weight'])

# print again
print(G.es.attribute_names())
# output: []

推荐阅读