我有一个熊猫数据帧:
我想为这个图生成一个权重转移矩阵 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 中执行此操作?
你不能像编程概念那样避免循环,但你可以避免 pythonfor
。
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.