Python 3.x 在Networkx中使用k-core时保留特定节点

Python 3.x 在Networkx中使用k-core时保留特定节点,python-3.x,graph,networkx,Python 3.x,Graph,Networkx,我使用Netwrokx创建了一个随机图,我想删除度数小于2的节点,但度数为1的2个用户定义节点除外。要删除度数小于2的所有节点,我可以使用Networkx的k-core。但我不确定如何保留这两个用户定义的节点。例如,以下代码生成 import networkx as nx import matplotlib.pyplot as plt # fig 1 G = nx.gnm_random_graph(n=20, m=30, seed=1) nx.draw(G, with_labels=True,

我使用Netwrokx创建了一个随机图,我想删除度数小于2的节点,但度数为1的2个用户定义节点除外。要删除度数小于2的所有节点,我可以使用Networkx的
k-core
。但我不确定如何保留这两个用户定义的节点。例如,以下代码生成

import networkx as nx
import matplotlib.pyplot as plt

# fig 1
G = nx.gnm_random_graph(n=20, m=30, seed=1)
nx.draw(G, with_labels=True, pos=nx.spring_layout(G))
plt.show()

G = nx.k_core(G, k=2)
nx.draw(G, with_labels=True, pos=nx.spring_layout(G))
plt.show()
图1:

图2:

我想询问关于如何保留2个用户定义节点的建议: e、 g

编辑:


我可以使用
中删除节点,如下所示。但是如果我们删除度数<2的节点,我们可能会得到新的节点,它最初的度数>=2,度数,下面是如何做到这一点:

degrees = nx.classes.degree(G)
G.remove_nodes_from([node
                     for node in G.nodes
                     if node not in retain_node_ids and degrees[node] <= 2])

非常感谢您的回复。但是在原始图中阶数大于等于2的节点现在可能阶数小于2。我想把这些也去掉。请检查@Natasha,请更新您的问题,因为您不是很具体。。。。
degrees = nx.classes.degree(G)
G.remove_nodes_from([node
                     for node in G.nodes
                     if node not in retain_node_ids and degrees[node] <= 2])
G.add_edges_from([(u, v) for u in retain_node_ids for v in (n, n+1)])
G = nx.k_core(G, k=2)
G.remove_nodes_from([n, n+1])