2017-04-26 31 views
2

我正在構建實現​​PageRank算法的轉換矩陣。我如何使用numpy來確保列合計一個。如何使numpy數組列的總和達到1

例如:

1 1 1 
1 1 1 
1 1 1 

應被歸一化是

.33 .33 .33 
.33 .33 .33 
.33 .33 .33 

回答

5

除以它們的列求和的每列的元素 -

a/a.sum(axis=0,keepdims=1) # or simply : a/a.sum(0) 

爲了使行向求和統一,改變軸輸入 -

a/a.sum(axis=1,keepdims=1) 

採樣運行 -

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.]) 

,以確保它的工作原理上int陣列以及爲Python 2.x中,使用from __future__ import division或使用np.true_divide