根据边修改邻接矩阵
Modifying adjacency matrix based on edges
我有图的邻接矩阵 H
。我删除了第一行和最后一行和列以生成一个新矩阵 H1
。在 H1
中,我想用每个顶点具有负号的边数替换对角线。图表、当前和期望的输出如下
import numpy as np
H = np.array([
[0, 1, 0, 1, 0],
[1, 0, 1, 1, 1],
[0, 1, 0, 1, 1],
[1, 1, 1, 0, 0],
[0, 1, 1, 0, 0]
])
H1 = H[1:-1, 1:-1]
print([H1])
当前输出:
array([[0, 1, 1],
[1, 0, 1],
[1, 1, 0]])]
期望的输出:
array([[-2, 1, 1],
[1, -2, 1],
[1, 1, -2]])]
您可以使用 numpy.identity
and numpy.ndarray.sum
来实现。即
>>> H1 - np.identity(3)*H1.sum(axis=1)
array([[-2., 1., 1.],
[ 1., -2., 1.],
[ 1., 1., -2.]])
我有图的邻接矩阵 H
。我删除了第一行和最后一行和列以生成一个新矩阵 H1
。在 H1
中,我想用每个顶点具有负号的边数替换对角线。图表、当前和期望的输出如下
import numpy as np
H = np.array([
[0, 1, 0, 1, 0],
[1, 0, 1, 1, 1],
[0, 1, 0, 1, 1],
[1, 1, 1, 0, 0],
[0, 1, 1, 0, 0]
])
H1 = H[1:-1, 1:-1]
print([H1])
当前输出:
array([[0, 1, 1],
[1, 0, 1],
[1, 1, 0]])]
期望的输出:
array([[-2, 1, 1],
[1, -2, 1],
[1, 1, -2]])]
您可以使用 numpy.identity
and numpy.ndarray.sum
来实现。即
>>> H1 - np.identity(3)*H1.sum(axis=1)
array([[-2., 1., 1.],
[ 1., -2., 1.],
[ 1., 1., -2.]])