我想从python-igraph
中的Graph对象中删除一个edge属性。等效的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']
[]
答案 0 :(得分:1)
您可能无法将其设置为空数组,但是您对直接更改EdgeSequence
的直觉已经相当不错了。您可以简单地使用Python内部的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: []