python - NetworkX:部分失败的图/网络的邻接矩阵

标签 python matrix networkx adjacency-matrix

回想一下,如果两个节点相连,则邻接矩阵为我们提供 1,否则为 0,我想为一个包含所有节点的正则图计算一个矩阵 active,还有一个用于同一个图,其中一些节点失败

让我们考虑一个 2x2 节点的格子网络。它的邻接矩阵(A)是:

0  1  1  0
1  0  0  1
1  0  0  1
0  1  1  0

生成此图: enter image description here

现在,让我们删除节点 0:

G.remove_node(0)

这就是新的邻接矩阵 (A1) 的样子:

0  0  1
0  0  1
1  1  0

返回此图: enter image description here

现在,这两个矩阵的大小明显不同。

我的问题:如何确保 Matrix A1 与 Matrix A 的大小相同?也就是说,如果节点 0 由于失败而不会出现,我希望将 0 放置在 A1 < em>对应于第0行和列,因此矩阵的大小保持不变。为了比较和计算的目的,我需要这样做。但要做到这一点,我假设我需要访问创建邻接矩阵的函数。我可以用更简单的方法来做吗?

节点 0 失败的示例:

0  0  0  0
0  0  0  1
0  0  0  1
0  1  1  0

这就是我创建 2x2 网络并生成邻接矩阵的方式:

import networkx as nx

N=2
G=nx.grid_2d_graph(N,N)
pos = dict( (n, n) for n in G.nodes() )
labels = dict( ((i,j), i + (N-1-j) * N ) for i, j in G.nodes() )
nx.relabel_nodes(G,labels,False)
inds=labels.keys()
vals=labels.values()
inds.sort()
vals.sort()
pos2=dict(zip(vals,inds))
nx.draw_networkx(G, pos=pos2, with_labels=True, node_size = 200)

A=nx.adjacency_matrix(G)
A.toarray()

#G.remove_node(i) to remove node i

最佳答案

尝试 G.remove_edges_from(G.edges(0)) 这将删除 0 的所有边而不是整个节点。然后生成邻接矩阵。

关于python - NetworkX:部分失败的图/网络的邻接矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37327360/

相关文章:

python - 按字母顺序对相同值的键进行排序

Python:计算两个矩阵的相似元素

python - 如何将两个特征/分类器组合成一个统一且更好的分类器?

Python NetworkX 从关联矩阵创建图形

python - 在 networkx 中从节点名称映射到它的索引,反之亦然

python - 通过 termios.TIOCSTI 注入(inject) unicode 字符

python - 两级分组图

c++ - 使用 boost c++ ublas 矩阵和 vector 类型进行元素运算

python - 在 NetworkX 图中添加具有属性的节点

python - 混淆的 mandlebrot 函数 - 有人可以对其进行反混淆吗?