#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. Отлично, спасибо! Я знал, что должно быть простое решение