본문 바로가기

머신러닝,딥러닝

numpy reshape(-1,1)

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 사용법을 정리해보았습니다 :)

많은 도움 되기를 바랍니다~

 

 

 

 

--참고--

https://rfriend.tistory.com/345