numpy에서 reshape 를 할 때 -1을 인자로 넣는 것을 자주 보게 됩니다.
이를 정리해보겠습니다.
우선 reshape 은 numpy array 의 배열을(=행과열) 재구성하는 겁니다.
아래와 같은 행렬이 있다고 한다면,
이를 reshape 하겠습니다.
행 부분에 -1 을 넣었을 때의 reshape 형태입니다.
-1을 통해서 좀 더 간편하게 reshape 이 됩니다. 위에서처럼 열 부분이 3열이기만 하면 된다면 (=물론 속성 전체 갯수에 맞춰서
행x열로 인수분해가 되야합니다) 그냥 -1을 넣어주면 됩니다.
열 부분에 -1을 넣어보겠습니다.
행 부분처럼 똑같습니다. 자, 그러면 reshape 을 해줄 때 m*n 부분이 원소의 전체 갯수와 맞아야만 reshape 이 되는데요.
이를 지켜주지 않는다면 아래에서 아래와 같은 에러들이 발생합니다.
{ reshape인자에 -1만 들어갔을 때는 아래를 참고해주시면 됩니다. 그냥 행 벡터가 만들어지는 겁니다 :) }
reshape 실제 적용 살펴보기!
자, 그러면 reshape 이 쓰이는 예제를 한 번 보겠습니다.
아래 코드는 타이타닉 데이터를 사이킷런의 logistic regression 을 이용해서 테스트셋을 예측한 부분 코드입니다.
여기서 reshape 부분만을 집중해서 보겠습니다.
pred 객체는 1D array 로 나옵니다. (=[ ] 대괄호가 한개로만 감싸져있으면 1d array)
1D array 는 벡터입니다.
이를 reshape(-1,1) 로 해봅니다.
그러면 2D array 가 되었고 이는 matrix 가 되었다는 의미입니다!
np.copy 는 파이썬에서 b=a 식으로 복사해버리면 같은 메모리 공간을 참조하기에 이를 다르게 해주기 위해서 사용한 겁니다 :)
python 에서는 copy.deepcopy() 와 거의 똑같은? 메서드이며 쓰는 상황도 위처럼 같은 메모리 공간 참조를 피하기 위해서 씁니다.
이것으로 reshape 사용법을 정리해보았습니다 :)
많은 도움 되기를 바랍니다~
--참고--
'머신러닝,딥러닝' 카테고리의 다른 글
Top 5 accuracy , Top 1 accuracy 이해 (feat. only 파이썬 코드) (1) | 2021.05.26 |
---|---|
checkpoint , tensorflow1과 2에서의 차이점 (NLP pretrained model) ; difference in checkpoint of Tensorflow version (0) | 2020.06.11 |
how to use docker image and container in ML,DL? (0) | 2020.06.09 |
conda 가상환경 명령어 모음(생성,제거,확인,활성화,패키지 설치) (0) | 2020.04.15 |