think deeply
axis(축) 이해 및 axis를 파라미터로 갖는 함수 활용하기 본문
-axis(축) 이해 및 axis를 파라미터로 갖는 함수 활용하기
-broadcasting 이해 및 활용하기
-Boolean indexing으로 조건에 맞는 데이터 선택하기
np.sum에는 기본적으로 axis=None이 설정되어있다.
따라서 axis를 따로 지정해주지 않는다면 axis=none으로 설정이된다.
1차원 벡터를 만들어보고,
단순히 np.sum은 모든 값을 다 더해주지만, 이 함수에는 axis-None이 숨어있다는 것을 인지하자.
axis를 0으로 설정해준다면 행방향으로, 1로 설정해준다면 열방향으로 값들을 더해준다.
프레스로 그 차원 방향으로 찍어 누른다고 생각하면 된다.
axis를 1로 설정해주기 위해서는 최소한 차원이 2차원 이상, 최소 벡터가 아닌 행렬을 가져야 한다.
reshape을 통해 벡터였던 것을 2차원인 3행5열 행렬을 만들어준다.
axis=0으로 설정을 해주면 행방향으로 찍어 눌러 모두 더한 값들이 도출이 된다.
axis=1으로 설정을 해주면 열방향으로 찍어 눌러 모두 더한 값들이 도출이 된다.
3차원 텐서로 한 번 보기 위해선 reshape을 통해 4행3열인 행렬 3개가 겹쳐진 텐서를 만들어 준다.
축으로 얘기하면 (3,4,3) 중에 첫번째가 0이기에 제일 앞으로 축이 0으로 바뀌기에 (0,4,3)으로 바뀐다.
추천하는 방식은 아니지만 축을 음수로 줘도 된다. 파이썬이랑 개념이 같다.
근데 추천안하는 이유는 우리가 활용하는 건 대부분 3차원이기에 마이너스 쓸 일이 거의 없기 때문이다.
브로드캐스팅이라는 것은 넘파이에서 가장 중요하다고도 생각할 수 있다고 한다.
브로드캐스팅은 연산되는 두 ndarray가 다른 shape을 갖는 경우 브로드 캐스팅(shape을 맞춤)
shape이 같은 두 개의 array를 각 원소별로 연산을 진행했는데 후 진행한다.
브로드 캐스팅이라면 b는 1x3인 거니까 a랑 뒤에서부터 비교를 했을 때 겹치는 게 있기에 브로드캐스팅을 사용하면 연산이 가능하게 된다.
a와 c가 연산이 안되는 이유는 뒷차원부터 차원을 비교해보면 겹치는 차원이 업식에 맞지 않다.
b를 리쉐입해서 행렬을 만들어준다. 그러면 b는 벡터이고 d는 1행3열의 행렬이 된다.
따라서 d는 a랑 브로드캐스팅이 가능해진다.
이번 주 웰컴 미팅 관련 공대운영위원회 회의가고 신입생 키트 포장하고 마케팅 반장 신청한 거 되서 단톡 연락돌리고,,
서울가서 동욱이형 만나고 놀고 풋살도 세 번이나 하고 숨가쁘게 지나왔다..
근데 왜이리 할 게 밀리냐아aㄴ야ㅐㄴ롬ㄴㅇㄹ
asdasdsfnkdsfhajsdbfvkalbiudhfaajhsldjhas;fhadosifhoadhfouashdufhasdifhoshxciusahcu0ahpjasoidhaudouasyd97asufdya weH;FOIABUIVAO;IH'PFIOAKSLJHFODSBAFU08Q9IPASJDHIOUAWHDW0SAIDHWKDAJSDOFASJFBDJF 으양ㅇ아아ㅏ아ㅏㄴ아
정신 놓겠다