2017-04-26 6 views
2

私はPageRankアルゴリズムを実装するための遷移行列を構築しています。 numpyを使用して列が1つになるようにするにはどうすればよいですか。numpy配列の列の合計を1にする方法

は、例えば: -

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

行優先を作るため

1 1 1 
1 1 1 
1 1 1 

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

答えて

5

分割そのカラム加算することにより、各列の要素となるように正規化されるべきです軸の入力を変更する -

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

、それは、Python 2.xのためだけでなくint配列上で動作を確認してくださいfrom __future__ import divisionを使用するか、またはnp.true_divideを使用するには。

関連する問題