为了账号安全,请及时绑定邮箱和手机立即绑定

将图形对象附加到 Python 中 networkx 列表的问题

将图形对象附加到 Python 中 networkx 列表的问题

HUH函数 2023-05-23 14:34:48
我正在尝试使用 networkx 包从图中随机删除节点。第一个块描述了图的构造,第二个块给出了我必须从图 H 中删除的节点列表(20%、50% 和 70% 的删除)。最后,我想要 3 个版本的基本图 H,在列表或任何数据结构中。块 3 中的代码为我提供了"None"类型的对象。最后一个块显示它适用于单个案例。我猜问题出在append函数中,它以某种方式返回类型为"None"的对象。我还觉得基础图 H 可能会在每次迭代后发生变化。有没有办法解决?任何帮助,将不胜感激 :)import networkx as nximport numpy as npimport random# node removals from Graphs at random# network constructionH = 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 removedperc = [.20,.50,.70] # percentage of nodes to be removedrandom_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 workinggraph_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 - worksH.remove_nodes_from(random_sample_list[1])nx.info(H)最终输出应如下所示:[具有 20% 删除节点的图形、具有 50% 删除节点的图形、具有 7% 删除节点的图形] - 例如。列表
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

该函数remove_nodes_from不返回修改后的图,而是返回None. 因此,您只需要创建具有所需节点百分比的图形并将其附加到列表中:


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)


查看完整回答
反对 回复 2023-05-23
  • 1 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信