본문 바로가기
Python/Build setting

[Numpy]넘파이 연산(sum)

by 소소한 혜밍씨 2022. 8. 29.

넘파이 연산 중 sum 함수에서 axis 파라미터의 default 값은 None 이다.

 

그 의미는 axis를 지정하지 않으면 numpy array 안의 모든 요소를 더한 값이 나온다는 것이다.

 

sum 함수(default)

 

z = np.arange(1, 11).reshape(2, 5)

print(z)



# 출력
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]]

 

먼저, 1부터 10까지 2행 5열의 2차원 배열을 가진 z를 생성한다.

 

생성된 z에 sum 함수를 적용해 그 출력을 확인하면

 

print(np.sum(z))



# 출력
55

 

모든 요소의 값을 더하여 출력값이 나온다.

 

 

 

 

 

sum 함수(axis=n)

 

이제, axis 파라미터를 적용한 값을 확인해보자.

 

sum1 = np.sum(z, axis=0)
sum2 = np.sum(z, axis=1)
sum3 = np.sum(z, axis=-1)

print(sum1, sum1.shape)
print(sum2, sum2.shape)
print(sum3, sum3.shape)



# 출력
[ 7  9 11 13 15] (5,)
[15 40] (2,)
[15 40] (2,)

 

적용한 axis 파라미터 별로 다른 값을 출력하는 것을 확인할 수 있다.

 

 

 

간단하지만 헷갈리는 부분이다.

 

sum 함수에서 axis()는 각 배열의 차원에 해당되는 index이다.

 

axis=0에 대하여 sum을 하라는 것은 0번 축 혹은 차원이 없어지는 방향으로 원소들을 모두 더하라는 것이다.

 

즉, 위에서 sum1의 경우, z[0,:]+z[1,:]의 연산을 하라는 의미이고,

 

sum2의 경우에는 z[:,0]+z[:,1]+z[:,2]+z[:,3]+z[:,4]의 연산을 하라는 의미이다.

 

 

 

그럼 설명한 의미와 결과가 동일한지 코드로 확인해보자.

 

# sum1(axis=0)
print(z[0,:] + z[1,:])

# sum2(axis=1)
print(z[:,0] + z[:,1] + z[:,2] + z[:,3] + z[:,4])



# 출력
[7 9 11 13 15]
[15 40]

 

댓글