: 배열과 차원을 변형해주는 함수
- np.reshape(변경할 배열, 차원)
- 배열.reshape(차원)
import numpy as np
a = [1,2,3,4,5,6,7,8]
b = np.reshape(a,(2,4))
c = np.reshape(a,(4,2))
print(b)
print('\n')
print(c)
>>>[[1 2 3 4]
[5 6 7 8]]
[[1 2]
[3 4]
[5 6]
[7 8]]
: 변경된 배열의 ‘-1’ 위치의 차원은
“원래 배열의 길이와 남은 차원으로 부터 추정”이 된다는 뜻
x = np.arange(12)
x = x.reshape(3,4)
x
>>> array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
x.reshape(-1,1)
>>> array([[ 0],
[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11]])
x.reshape(-1,2)
>>> array([[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9],
[10, 11]])
x.reshape(-1,3)
>>> array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
즉, 행(row)의 위치에 -1을 넣고 열의 값을 지정해주면 변환될 배열의 행의 수는 알아서 지정이 된다는 뜻
x.reshape(1,-1)
>>> array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]])
x.reshape(2,-1)
>>> array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11]])
x.reshape(3,-1)
>>> array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
행(row)의 수를 지정해주면 열은 알아서 자동으로 재배열을 해주는 것
x.reshape(-1)
>>> array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
x.reshape(1, -1)
>>> array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]])
-1만 들어가면 1차원 배열을 반환한다
모양상은 x.reshape(1,-1)과 같으나 차원수가 다름
다음의 블로그를 참고했습니다.