Sim*_*mon 6 python numpy pagerank matrix
我正在构建一个用于实现PageRank算法的转换矩阵.我怎么能使用numpy来确保列加起来一个.
例如:
1 1 1
1 1 1
1 1 1
Run Code Online (Sandbox Code Playgroud)
应该归一化为
.33 .33 .33
.33 .33 .33
.33 .33 .33
Run Code Online (Sandbox Code Playgroud)
Div*_*kar 12
按列总结划分每列的元素 -
a/a.sum(axis=0,keepdims=1) # or simply : a/a.sum(0)
Run Code Online (Sandbox Code Playgroud)
要使行总和统一,请更改轴输入 -
a/a.sum(axis=1,keepdims=1)
Run Code Online (Sandbox Code Playgroud)
样品运行 -
In [78]: a = np.random.rand(4,5)
In [79]: a
Out[79]:
array([[ 0.37, 0.74, 0.36, 0.41, 0.44],
[ 0.51, 0.86, 0.91, 0.03, 0.76],
[ 0.56, 0.46, 0.01, 0.86, 0.38],
[ 0.72, 0.66, 0.56, 0.84, 0.69]])
In [80]: b = a/a.sum(axis=0,keepdims=1)
In [81]: b.sum(0) # Verify
Out[81]: array([ 1., 1., 1., 1., 1.])
Run Code Online (Sandbox Code Playgroud)
要确保它适用于intPython 2.x的数组,请使用from __future__ import division或使用np.true_divide.
对于添加最多的列 0
对于添加0最多的列,假设我们可以将它们保持原样,我们可以将求和设置为1,而不是除以0,如此 -
sums = a.sum(axis=0,keepdims=1);
sums[sums==0] = 1
out = a/sums
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9753 次 |
| 最近记录: |