python/numpy

reshape 함수

jwjwvison 2021. 3. 18. 22:20
  • order array를 다음과 같이 reshape 할 수 있다.
a=np.arrange(6).reshape((3,2))

>>>a

array([[0,1],[2,3],[4,5]])

 

  • 다음과 같은 방법으로도 가능하다
a=np.array([[1,2,3],[4,5,6]])
np.reshape(a,6)
#-->array([1,2,3,4,5,6])

 

  • -1의 의미

reshape()의 '-1' 이 의미하는 바는, 변경된 배열의 '-1' 위치의 차원은 "원래 길이와 남은 차원으로 부터 추정"이 된다는 뜻이다.

import numpy as np
x=np.arrange(12).reshape(3,4)

x=array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])

 

(1) reshape(-1,정수)의 행(row) 위치에 '-1'이 들어있는 경우

  총 12개의 원소가 들어있는 배열 x에 대해서 x.reshape(-1, 정수) 를 해주면 '열(column)' 차원의 '정수'에 따라서 12개의 원소가 빠짐없이 배치될 수 있도록 '-1'이 들어가 있는 '행(row)' 의 개수가 가변적으로 정해짐을 알 수 있다.

 

(2)  reshape(정수,-1)의 열(column) 위치에 '-1'이 들어있을 경우

 

(3) reshape(-1) 인 경우

 x.reshape(-1)은 x.reshape(-1,1)과 같이 1차원 배열을 반환한다

 

  • reshape(-1, 정수) 또는 reshape(정수, -1) 메소드가 제대로 작동하기 위해서는 한가지 조건이 있는데, 원래의 배열에 있는 원소가 재구조화 혹은 재배열 되려는 배열의 차원에 빠짐없이 분배가 될 수 있어야 한다는 점이다.
  • reshape(-1, -1)은 행, 열 어느 차원도 정해주지 않았으므로 ValueError 가 발생합니다.