在 Python 中将图形对象附加到 networkx 列表时出现问题
Problem with appending a graph object to lists for networkx in Python
我正在尝试使用 networkx 包从图中随机删除节点。第一个块描述了图的构造,第二个块给出了我必须从图 H 中删除的节点列表(20%、50% 和 70% 的删除)。 我最后想要 3 个版本的基本图 H,在列表或任何数据结构中。块 3 中的代码为我提供了 "None" 类型的对象。最后一个块显示它适用于单个案例。
我猜测问题出在 append 函数中,它以某种方式 returns 类型 None 的对象。 =23=]。我还觉得基础图 H 可能会在每次迭代后发生变化。有没有办法解决?任何帮助将不胜感激:)
import networkx as nx
import numpy as np
import random
# node removals from Graphs at random
# network construction
H = nx.Graph()
H.add_nodes_from([1,2,3,4,5,6,7,8,9,10])
H.add_edges_from([[1,2],[2,4],[5,6],[7,10],[1,5],[3,6]])
nx.info(H)
nodes_list = list(H.nodes)
# list of nodes to be removed
perc = [.20,.50,.70] # percentage of nodes to be removed
random_sample_list = []
for p in perc:
interior_list = []
random.seed(2) # for replicability
sample = round(p*10)
random_sample = random.sample(nodes_list, sample)
interior_list.append(random_sample)
random_sample_list.append(random_sample)
# applying the list of nodes to be removed to create a list of graphs - not working
graph_list = []
for i in range(len(random_sample_list)):
H1 = H.copy()
graph_list.append(H1.remove_nodes_from(random_sample_list[i]))
# list access - works
H.remove_nodes_from(random_sample_list[1])
nx.info(H)
最终输出应如下所示:
[具有 20% 移除节点的图表、具有 50% 移除节点的图表、具有 7% 移除节点的图表] - 例如。名单
函数remove_nodes_from
不是return修改后的图形,而是returnNone
。因此,您只需要创建具有所需节点百分比的图表并将其附加到列表中:
graph_list = []
for i in range(len(random_sample_list)):
H1 = H.copy()
H1.remove_nodes_from(random_sample_list[i])
graph_list.append(H1)
我正在尝试使用 networkx 包从图中随机删除节点。第一个块描述了图的构造,第二个块给出了我必须从图 H 中删除的节点列表(20%、50% 和 70% 的删除)。 我最后想要 3 个版本的基本图 H,在列表或任何数据结构中。块 3 中的代码为我提供了 "None" 类型的对象。最后一个块显示它适用于单个案例。
我猜测问题出在 append 函数中,它以某种方式 returns 类型 None 的对象。 =23=]。我还觉得基础图 H 可能会在每次迭代后发生变化。有没有办法解决?任何帮助将不胜感激:)
import networkx as nx
import numpy as np
import random
# node removals from Graphs at random
# network construction
H = nx.Graph()
H.add_nodes_from([1,2,3,4,5,6,7,8,9,10])
H.add_edges_from([[1,2],[2,4],[5,6],[7,10],[1,5],[3,6]])
nx.info(H)
nodes_list = list(H.nodes)
# list of nodes to be removed
perc = [.20,.50,.70] # percentage of nodes to be removed
random_sample_list = []
for p in perc:
interior_list = []
random.seed(2) # for replicability
sample = round(p*10)
random_sample = random.sample(nodes_list, sample)
interior_list.append(random_sample)
random_sample_list.append(random_sample)
# applying the list of nodes to be removed to create a list of graphs - not working
graph_list = []
for i in range(len(random_sample_list)):
H1 = H.copy()
graph_list.append(H1.remove_nodes_from(random_sample_list[i]))
# list access - works
H.remove_nodes_from(random_sample_list[1])
nx.info(H)
最终输出应如下所示: [具有 20% 移除节点的图表、具有 50% 移除节点的图表、具有 7% 移除节点的图表] - 例如。名单
函数remove_nodes_from
不是return修改后的图形,而是returnNone
。因此,您只需要创建具有所需节点百分比的图表并将其附加到列表中:
graph_list = []
for i in range(len(random_sample_list)):
H1 = H.copy()
H1.remove_nodes_from(random_sample_list[i])
graph_list.append(H1)