生成直接图的权重传递矩阵(或转换矩阵)(作为熊猫数据框)

时间:2018-10-20 22:12:21

标签: python numpy matrix transition pagerank

我有一个熊猫数据框:

我想为该图生成一个权重传递矩阵M(10000 * 10000),而无需在python中使用循环(因为循环占用大量时间)来进行PageRank计算。对于该图,我假设框架的每一列都作为矩阵的索引,因为它们的值都一直到10000。

    FromNodeId  ToNodeId
0   0   1
1   0   2
2   0   3
3   0   4
4   0   5
5   0   6
6   0   7
7   0   8
8   0   9
9   0   10
10  0   11
11  0   12
12  0   13
13  0   14
14  0   15
15  0   16
16  1   0
17  1   7
18  1   17
19  1   18
20  1   19
21  1   20
22  1   21
23  1   22
24  1   23
25  1   24
26  1   25
27  1   26
28  1   27
29  1   28
... ... ...
37810   9960    0
37811   9960    1273
37812   9960    9960
37813   9961    0
37814   9961    1273
37815   9961    9961
37816   9964    45
37817   9964    3731
37818   9964    6275
37819   9964    9964
37820   9965    6275
37821   9967    0
37822   9967    3950
37823   9967    5242
37824   9967    9967
37825   9968    0
37826   9968    3950
37827   9968    5242
37828   9968    9968
37829   9970    9971
37830   9972    5526
37831   9977    2742
37832   9977    6596
37833   9978    6596
37834   9980    2742
37835   9980    6596
37836   9981    2742
37837   9981    6596
37838   9990    9995
37839   9995    9990

如何在python中执行此操作?

1 个答案:

答案 0 :(得分:0)

您不能像编程概念中那样避免循环,但是可以避免使用python for

matrix = np.zeros(size=(10000,10000))

def func(row):
    global matrix
    matrix[row['FromNodeId'], row['ToNodeId']] = 1
    return row # returning for function sake

df.apply(func)

matrix # now contains all values.