본문 바로가기
파이썬

파이썬 numpy 행 합계로 행 나누기

by º기록 2021. 1. 19.
반응형

이 행의 모든 ​​값의 합으로 numpy 배열 행을 어떻게 나눌 수 있습니까?

이것은 하나의 예입니다. 그러나 나는 이것을하는 화려하고 훨씬 더 효율적인 방법이 있다고 확신합니다.

import numpy as np
e = np.array([[0., 1.],[2., 4.],[1., 5.]])
for row in xrange(e.shape[0]):
    e[row] /= np.sum(e[row])

결과:

array([[ 0.        ,  1.        ],
       [ 0.33333333,  0.66666667],
       [ 0.16666667,  0.83333333]])

 

해결 방법

 

방법 # 1 : None (또는 np.newaxis )을 사용하여 방송이 작동하도록 추가 차원을 추가합니다.

>>> e
array([[ 0.,  1.],
       [ 2.,  4.],
       [ 1.,  5.]])
>>> e/e.sum(axis=1)[:,None]
array([[ 0.        ,  1.        ],
       [ 0.33333333,  0.66666667],
       [ 0.16666667,  0.83333333]])

방법 # 2 : transpose-happy로 이동 :

>>> (e.T/e.sum(axis=1)).T
array([[ 0.        ,  1.        ],
       [ 0.33333333,  0.66666667],
       [ 0.16666667,  0.83333333]])

(원하는 경우 간결성을 위해 axis = 부분을 삭제할 수 있습니다.)

방법 # 3 : (Jaime의 의견에서 승격 됨)

차원을 유지하려면 sum keepdims 인수를 사용하십시오.

>>> e/e.sum(axis=1, keepdims=True)
array([[ 0.        ,  1.        ],
       [ 0.33333333,  0.66666667],
       [ 0.16666667,  0.83333333]])

 

참조 페이지 https://stackoverflow.com/questions/16202348

 

 

반응형

댓글