赋值使矩阵中每一行和每一列的总和相同

问题描述 投票:0回答:0

我在下面有一个邻接矩阵(列和标题都是用户 ID),其值为 0 或 1。值 1 表示第一个用户认识第二个用户,反之亦然(例如,用户 0 认识用户 1,反之亦然),而值 0 表示两个用户彼此不认识。

enter image description here

矩阵的形状为 (N, N) 即 (5, 5) 并且: Matrix[i][j] = 1 / d[j] 如果 userID = i 知道 userID = j。 d[j] 是 j 索引的用户知道的用户总数。 每行和每列的总和应该是 1.

根据下面的代码,我设法使每列的总和为 1,但是,我无法弄清楚如何操作这些值,使每行的总和也为 1。

matrix = [[0, 1, 0 ,1, 0],
          [1, 0, 0, 1, 0],
          [0, 0, 0, 1, 1],
          [1, 1, 1, 0, 1],
          [0, 0, 1, 1, 0]]

d = np.sum(matrix, axis = 0) # sum the value of 1 in each column

for i in range(len(matrix)):
    for j in range(len(matrix)):
        if matrix[i][j] == 1:
            matrix[i][j] = 1 / d[j]
        else:
            matrix[i][j] = 0

下面是我的结果,反映每列的总和为 1.

enter image description here

感谢您的所有指导。

python numpy matrix adjacency-matrix
© www.soinside.com 2019 - 2024. All rights reserved.