본문 바로가기

Python

[Python] numpy reshape(-1,1)

📒 reshape함수

배열과 차원을 변형해주는 함수

 

1️⃣ np.reshape(변경할 배열, 차원)

2️⃣ 배열.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]]

 

📒 reshape에서 -1의 의미

변경된 배열의 ‘-1’ 위치의 차원은 “원래 배열의 길이와 남은 차원으로 부터 추정”이 된다는 뜻

 

1️⃣ reshape(-1, 정수) : 행의 위치에 -1인 경우

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을 넣고 열의 값을 지정해주면 변환될 배열의 행의 수는 알아서 지정이 된다는 뜻

 

2️⃣ reshape(정수,-1) : 열의 위치에 -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)의 수를 지정해주면 열은 알아서 자동으로 재배열을 해주는 것

 

3️⃣ reshape(-1)

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)과 같으나 차원수가 다름






🙇‍♀️다음의 블로그를 참고했습니다.