Как удалить атрибут edge в python-igraph

#python #python-3.x #igraph

#python #python-3.x #igraph

Вопрос:

Я хочу удалить атрибут edge из объекта Graph в 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']
[]
  

Ответ №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: []
  

Комментарии:

1. Отлично, спасибо! Я знал, что должно быть простое решение