축? 차원? axis? dim? 비슷한 듯 달라서 자주 헷갈렸었다.
Numpy와 Tensorflow에서 자주 등장하는 axis, dim의 차이를 정리해보고자 한다.
특히 axis와 dim은 행렬의 연산(concat, stack, sum, max...)의 방향을 설정하는 데 사용되므로, 확실히 짚고 넘어가보자.
axis (축)
배열의 차원 | 연산 방향 설정 시, axis의 해석 | 적용 예시 |
1차원 | 축은 axis = 0 하나 뿐이다. (행과 열로 구분되지 않음) | dim_1 = np.array([0,1,2]) |
2차원 | axis = 0 : 행 방향 (y 방향, 세로 방향) axis = 1 : 열 방향 (x 방향, 가로 방향) |
dim_2 = np.array([[0,1,2], [3,4,5]]) * shape가 (2,3) dim_2.sum(aixs=0) = [0+3, 1+4, 2+5] = [3,5,7] (행 방향으로 합) dim_2.sum(aixs=1) = [0+1+2, 3+4+5] = [3, 12] (열 방향으로 합) |
3차원 | axis = 0 : 너비 방향 (z 방향) axis = 1 : 행 방향 (y 방향, 세로 방향) axis = 2 : 열 방향 (x 방향, 가로 방향) |
dim_3 = np.array([[[0,1,2], [3,4,5]], [6,7,8], [9,10,11]]]) * shape가 (2,2,3) dim_3.sum(aixs=0) = [[0+6, 1+7, 2+8], [3+9, 4+10, 5+11]] = [[6,8,10], [12,14,16]] (너비 방향으로 합) |
* 4차원 이상이 되면, 더 이상 행렬 개념으로 이해할 수 없음.
* 주어진 배열의 차원이 무엇이냐에 따라 axis = 0, axis = 1, ...가 가리키는 방향이 달라진다 ! 상대적 개념.
* axis를 지정하지 않고 sum을 할 경우 모든 원소의 합이 계산된다.
+ 2차원 배열에 대한 axis 개념을 직관적으로 잘 표현한 도식이 있다.
+ 3차원 배열에 대한 axis 개념을 직관적으로 잘 표현한 도식이 있다.
참고 페이지: https://pybasall.tistory.com/129
dim
* 주의: dim이 dimension(=차원)의 준말이기는 하나, 이때 '차원'의 두 가지 해석에 유의해야 한다.
* dim은 ① 특정 텐서의 속성이기도 하고, ② 연산 방향을 설정할 때 사용될 수도 있다.
'차원'의 두 가지 의미 | |
벡터나 행렬의 '열' 개수 | ex 1. [1,2,3]는 3차원 벡터이다. ex 2. 이번에는 이진 분류가 아닌 칠진 분류 task이므로, 7차원 벡터로 반환해야 한다. |
텐서가 존재하는 '축'의 개수 => ① |
ex 1. [0,1,2]는 1차원 텐서(벡터)이다. ex 2. [[0,1,2], [3,4,5]] 는 2차원 텐서(행렬)이다. ex 3. [[[0,1,2], [3,4,5]], [6,7,8], [9,10,11]]] 는 3차원 텐서(행렬)이다. ex 4. 점은 1차원, 직선은 2차원, 정육면체는 3차원! |
배열의 차원 | 연산 방향 설정 시, dim의 해석 => ② |
1차원 | 축은 axis = 0 하나 뿐이다. (행과 열로 구분되지 않음) |
2차원 | dim = 0 : 행 방향 (y 방향, 세로 방향) (* dim= -2) dim = 1 : 열 방향 (x 방향, 가로 방향) (* dim= -1) |
3차원 | dim = 0 : 행 방향 (y 방향, 세로 방향) (* dim= -3) dim = 1 : 열 방향 (x 방향, 가로 방향) (* dim= -2) dim = 2 : 너비 방향 (z 방향) (* dim= -1) |
* dim은 주어진 배열의 차원이 무엇이든지 관계 없이 axis = 0, axis = 1, ...가 가리키는 방향이 동일하다.
속상하게도 axis에서 정한 방향과 다른 부분이 있으니 헷갈리지 말 것!
그러나 dim=-1, dim=2,.. 이 가리키는 방향은 상대적으로 바뀌게 된다.
참고 페이지: https://questionet.tistory.com/25
+ a:
len | size | ndim | shape | reshape | flatten |
파이썬 내장 함수 | numpy.ndarray 객체의 메서드 (파이썬 list나 string에 사용 불가) ndarray.XX |
||||
첫번째 차원(행)의 원소 개수 | 행렬의 전체 원소 개수 |
행렬 전체 차원(dim) 표시 |
행렬의 shape 출력 | 배열을 새로운 shape로 변경 (*가능한 조건일 때) |
n차원 행렬을 1차월 행렬로 reshape하여 복사본 출력 |
+ 미니배치 처리할 때는: (너비 값 즉 배치 사이즈 , 행 개수, 열 개수) 순서.
https://blog.naver.com/PostView.nhn?blogId=life4happy&logNo=222170909964
'개발' 카테고리의 다른 글
colab에서 .py 실행하기 (0) | 2022.07.10 |
---|