Удалить узлы в новой переменной, не затрагивая исходную переменную (Networkx) - PullRequest
0 голосов
/ 24 апреля 2018

Я использую networkx для генерации случайных графиков.

Мой процесс выглядит следующим образом:

из исходного графа G, скажем:

 G = nx.watts_strogatz_graph(100, 2, 0) 

Я хотел бы сгенерировать 40 других графов, чтобы в сгенерированных графах было меньше узлов, чем в исходном графе.

На каждой итерации я устанавливаю количество удаляемых узлов и индекс узлов.

Что я пробовал?

G = nx.watts_strogatz_graph (100, 2, 0) # - исходный граф, из которого я генерирую другие графы

number_examples = 40

for i in np.arange(examples):
        F = randint(1, 5) # to get the number of nodes to remove for the example i

        nodes_remove = sample(range(0, len(G.nodes())), F)# return the indexes of nodes to be removed
        L=G # L will be the new graph, G is the initial graph 
        L.remove_nodes_from(nodes_remove)
        number_nodes.append(len(L.nodes()))
        print('number of nodes in the new graph L ', len(L.nodes())
        print('number of nodes in the initial graph G ', len(G.nodes())

Неправильный вывод? Да, вывод L правильный, так как я удаляю узлы. Однако G должен остаться прежним len(G.nodes())=100, так как я установил L=G, я внесу изменения только в L

Однако каждый раз, когда l удаляет узлы в L, G делает то же самое.

Ожидаемый результат?

Для исходного графа G = 100 узлов

l генерирует, скажем, пять графиков L1, L2, L3, L4, L5 из исходного графика G :

L1= 97 nodes
L2= 98 nodes
L3= 95 nodes
L4= 99 nodes
L5=97 nodes

это ожидаемые результаты

Однако я получаю:

L1= 97 nodes
L2= 95 nodes
L3= 90 nodes
L4= 89 nodes
L5=86 nodes

, что означает, что на итерации мы удаляем узлы из нового сгенерированного графа.

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 24 апреля 2018

Я нашел ответ в документации :

L = G.copy()

Это делает полную копию графика, включая все атрибуты узла или ребра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...