넘파이 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
'머신러닝 > 넘파이' 카테고리의 다른 글
[Numpy] ndarray 인덱싱(Indexing) 종류와 사용방법(2) - 팬시 인덱싱 (0) | 2021.08.23 |
---|---|
[Numpy] ndarray 인덱싱(Indexing) 종류와 사용방법(1) - 단일 값 추출, 슬라이싱 (0) | 2021.08.22 |
[Numpy] ndarray 크기 변경 reshape() (0) | 2021.08.21 |
[Numpy] array 생성함수 - arange, ones, zeros, empty (0) | 2021.08.10 |
[Numpy] ndarray 생성 및 사용 방법 (0) | 2021.08.09 |