머신러닝/넘파이

[Numpy] ndarray 의 axis 축 개념 및 소스 코드 예제

shoney9254 2021. 8. 10. 22:33
반응형

넘파이 ndarray 의 axis 축

axis 는 쉽게 외우기 위해서는 '너의 상위 배열 몇개냐?' 라고 외우면 쉽다.

 2차원 배열 같은 경우 [[1,2,3],[1,2,3]]  가장 큰 [[1,2,3],[1,2,3]] 2차 배열과 안쪽에 [1,2,3]이라는 1차 배열이 있다. 

 2차원 배열 안의 1차 배열 은 상위 배열이 1개 있으므로, axis =1 축이라고 보면된다. axis =1의 축이라고 했을때 1차 배열에서 add 해서 리스트를 추가하는 방향이라고 생각하면된다. 

 2차원 배열의 2차원 배열은 [[1,2,3],[1,2,3]] 상위 배열이 없다고 보고, axis = 0 축이라고 보면된다. (상위 배열 = axis 축)

그래서 2차원 배열에서 항목을 하나 추가하려면 1차원 배열을 추가해야한다. 그러므로, 2차원 배열에서 add하는 경우의 방향으로 생각하면 된다. 

 

2차원 배열의 axis 연산

1) 2차월 배열을 axis 축을 방향으로 연산하는 것을 아래 소스코드로 확인해보자. 

소스 코드

# 2차원 axis 연산

array2 = np.array([[1, 2, 3],

                  [2, 3, 4]])

 

print(array2.sum())  # 모든 값을 더한다

print(array2.sum(axis=0))  # aixs=0 방향으로 더한다

print(array2.sum(axis=1))  # aixs=1 방향으로 더한다

 

2) 결과를 보면 axis 축의 방향으로 연산을 하는 것을 확인 할 수 있다. 

print 결과

15
[3 5 7]
[6 9]

 

3차원 배열의 axis 연산

1) 3차원 배열부터 가시성이 떨어진다. 결과를 봐도 이해하기가 힘들고 대괄호를 넣었을때 사람이 실수 할 수 있는 부분이 많아진다. 그래서, arage, zeros, ones 등을 이용해서 3차원을 생성해야한다. 

소스 코드

# 3차원 axis 연산

array3 = np.array([[[1, 2, 3],

                  [2, 3, 4]],

    [[1, 2, 3],

     [2, 3, 4]]])

 

print(array3.sum())  # 모든 값을 더한다

print(array3.sum(axis=0))  # aixs=0 방향으로 더한다

print(array3.sum(axis=1))  # aixs=1 방향으로 더한다

print(array3.sum(axis=2))  # aixs=1 방향으로 더한다

 

2) 결과를 보더라도 계산하기 어려운 차원으로 넘어와 버렸다. 

print 결과

30
[[2 4 6]
 [4 6 8]]
[[3 5 7]
 [3 5 7]]
[[6 9]
 [6 9]]

 

다음 글 : [Numpy] array 생성함수 - arange, ones, zeros, empty

 

반응형