构建给定稀疏矩阵的对称邻接矩阵

时间:2021-05-11 04:57:47

标签: python numpy matrix scipy sparse-matrix

我发现很难理解下面这段代码,它构造了一个给定稀疏矩阵的稀疏邻接矩阵。

# build symmetric adjacency matrix
adj = adj + adj.T.multiply(adj.T > adj) - adj.multiply(adj.T > adj)

这是我尝试过的:

adj =np.array([[2. , 0., 0. ],
           [3. , 0. , 0. ],
           [3. , 0. , 0. ]])
adjs=sp.coo_matrix(adj)
adjs.T.todense()

#matrix([[2., 3., 3.],
        [0., 0., 0.],
        [0., 0., 0.]])

adjs.T.multiply(adjs.T > adjs).todense()

#matrix([[0., 3., 3.],
        [0., 0., 0.],
        [0., 0., 0.]])

q= adjs+adjs.T.multiply(adjs.T > adjs)+adjs - adjs.multiply(adjs.T > adjs)
q.todense()

matrix([[4., 3., 3.],
        [6., 0., 0.],
        [6., 0., 0.]])

在输出中,对角线不为零。

代码是 Kipf 的图卷积网络论文的一部分,它位于 setup.py 文件中:

https://github.com/yao8839836/text_gcn/blob/b230e8083f838953646a9034b60abc5f69b062f6/utils.py#L176

我不明白该代码如何使矩阵对称。谁能给个解释?

此问题已在 Unexpected angle bracket "<" in numpy multiply() of matrices

之前提出

但是没有解释该代码是如何工作的。在我的示例中,我不知道为什么我的对角线元素不为零。

0 个答案:

没有答案