2017-04-26 3 views
2

PageRank 알고리즘을 구현하기위한 전환 행렬을 작성하는 중입니다. numpy를 사용하여 열이 하나가되도록하는 방법은 무엇입니까?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.]) 

from __future__ import division를 사용하거나 np.true_divide를 사용, 파이썬 2.x에서뿐만 아니라 int 배열에 작동하는지 확인합니다.