2021. 3. 19. 00:23ㆍ업무 스킬/Python(파이썬)
포스팅을 보기에 앞서, 이 글을 읽는 사람이 4차원쯤은 머릿속에서 그릴 수 있다. 하면 뒤로 가기를 누르길 바란다.
그럼 시작한다.
1. Axis = Numbering 부터 확인
np.sum([array], axis = # )가 기본 차원 연산자인데, 저 식의 맨뒤 axis = #
즉, 차원의 Numbering이 패턴이 있다. 아래 표를 보자
표처럼 차원이 하나씩 늘어날수록 기존의 차원 Numbering이 하나씩 뒤로 밀리는 것을 볼 수 있다.
예를 들면 1차원에서는 axis = 0이 x 축이였다면, 3차원 배열의 경우 axis = 0의 축은 z 축이 된다.
이 점이 Numpy를 처음 시작할 때 나에게 큰 혼동을 주었고 이제는 뭐 외우게 되었다.
2. 한 차원 연산 익히기
그럼 한 차원만 연산해보도록 하자. 코드는 Jupyter NoteBook에서 작성했다.
우선 arr_1이라는 2-Dimension 배열을 만든다. (y=2, x=5)의 배열이 만들어짐이 확인 된다.
그렇다면 이것을 axis = 0 즉 y축으로 mean 값을 구해보자
axis = 0 (y축)으로 연산을 했더니 Shape이 (2, 5) → (5, )으로 된 것을 알 수 있다.
즉 Shape의 [0] 번째가 날아가고 [1] 번째만 남았다.
다시 한번 해보자.
이번엔 3차원으로 배열을 만들어보자 (z=3, y=2, x=5)의 3차원 배열을 만들었다
역시 이번에도 axis = 0 , z 축을 기준으로 연산해보자
Shape가 (3, 2, 5)인 3차원을 axis = 0으로 연산했더니 Shape [0]이 날아가고 (2, 5)만 남았다.
여기서 똑똑한 것들은 '야 당연한걸 뭐 어렵게 검증하고 있냐.'
이럴 거다 그래 나 멍청해서 해봤다.
3. 두 개의 차원 연산 익히기
하지만 여기서 axis를 하나의 차원으로 하지 않고 두개의 차원으로 한다면?
Shape가 (3, 2, 5)인 배열을 axis = (1, 2)로 연산을 하였더니
Shape의 [1], [2] 번째가 날아가고 (3, )만 남았다.
그래 이제 드디어 파악이 되었다.
4. 4차원에서 두 개의 차원 연산 익히기
내가 왜 이걸 일일이 해봤냐면 4차원 배열에서의 2차원 연산 때문에 그런다.
진짜 4차원이 머릿속에서도 안 그려지는데 그걸 또 2차원 연산을 하면
어떻게 나오는지 확인하라니 미치고 환장할 노릇이지
하지만 이제 이것들을 알아놨으니 이제 4차원의 2차원 연산도 쉽게 결과를
알 수 있다.
아래 4차원 배열이 있다.
배열을 너무 많으니 여기까지만 붙이고
자 Shape가 (4, 3, 2, 5)인 4차원 배열을 z축과 x축을 기반으로 연산하면
어떤 결과가 나올까?
그래 axis = (1, 3)으로 계산을 하였으니 (4, 2)인 Shape가 결과가 나올 것이다.
나오는 것을 볼 수 있다. 이제 슬슬 머리에 그려지는가? 다중 차원의 연산이 어떻게
이루어지는지 완벽하다고 할 수 없겠지만 실마리를 잡았다 할 수 있을 것이다.
코딩하다 보면 천재들은 정말 재수 없다 평범한 사람이 보기에 코딩이 얼마나
어려운지 이해를 못하더라. 평범한 우리 사람들 파이팅.
'업무 스킬 > Python(파이썬)' 카테고리의 다른 글
[Jupyter Notebook] 글씨체 변경 방법. (0) | 2021.04.07 |
---|---|
[Numpy] Pooling, Average_Pooling 방법 및 설명 (2) | 2021.03.27 |
[Python(파이썬)기초] For 문의 기초 (0) | 2020.08.11 |
[Python(파이썬) 기초] LIST 형식의 정리 Part .2 (0) | 2020.08.06 |
[Python(파이썬) 기초] LIST 형식의 정리 Part .1 (0) | 2020.08.05 |