머신러닝 Machine Learning

Reshape 차원과 크기 변경

디지털농담곰 2023. 12. 15. 14:46

 

 

Reshape 차원과 크기 변경

 

reshape 메서드는 모델의 특성에 따라 ndarray의 데이터 특정 차원 및 크기로 변환하는 기능이 있습니다. 다음 예시를 통해서 0 부터 9까지 1차원 ndarray를 2차원으로 변경하는 방법을 살펴보겠습니다.

 

array_1 = np.array(10)

print(“array_1: \n”, array_1)

 

array_2 = np.array.reshape(2, 5)

print(“array_2: \n”, array_2)

 

array 3 = np.array.reshape(5, 2)

print(“array_3: \n”, array_3)



< 출력 >

array_1: 

[0 1 2 3 4 5 6 7 8 9]

 

array_2: 

[[0 1 2 3 4]

[5 6 7 8 9]]

 

array_3:

[[0 1]

[2 3]

[4 5]

[6 7]

[8 9]] 

 

위와 같이 1차원의 ndarray를 2차원으로 바꾸어주었습니다. 하지만 (3, 4) 형태 같이 숫자가 맞지 않는 경우에는 에러가 발생하기 때문에 주의하셔야합니다. 이러한 경우엔 -1을 인자로 사용하면 원래 ndarray의 열이나 행의 짝에 맞게 새로운 shape로 바꾸어줍니다. 아래 예제를 통해 살펴보겠습니다.

 

array_1 = np.array(10)

print(array_1)

 

array_2 = reshape(-1, 5)

print(“array_2 shape:”, array_2.shape)

 

array_3 = reshape(5, -1)

print(“array_3 shape:”, array_3.shape)

 


< 출력 >

[0 1 2 3 4 5 6 7 8 9]

array_2 shape: (2, 5)

array_3 shape: (5, 2)

-1이 열이나 행에 맞게 새로운 shape으로 바꾸어주기는 하지만 만약 reshape(-1, 4)와 같이 인자를 주면 에러가 발생합니다. 



Reshape(-1, 1) 

인자를 (-1, 1)로 주면 3차원이나 1차원의 ndarray 형태를 2차원으로 변경해줍니다. 1개의 열을 기준으로 여러개의 로우로 변환해주기 때문에 2차원 변경할 때 유용하게 사용됩니다. 

 

array_1 = np.array(8)

array_3d = array_1.reshape((2, 2, 2))

print(“array_3d:\n”, array_3d.tolist())

 

#3차원 ndarray를 2차원으로 변환

array_5 = array_3d.reshape(-1, 1)

print(“array_5:\n”, array_5.tolist())

print(“array_5 shape:”, array_5.shape)

 

#1차원 ndarray를 2차원으로 변환

array_6 = array_1d.reshape(-1, 1)

print(“array_6:\n”, array_6.tolist())

print(“array_6 shape:”, array_6.shape)

 

< 출력 >

array_3d: 

[[[0, 1], [2, 3], [[4, 5], [6, 7]]]

 

Array_5:

[[0] ,[1], [2], [3], [4], [5], [6], [7]]

Array_5 shape: (8, 1)

 

Array_6:

[[0] ,[1], [2], [3], [4], [5], [6], [7]]

Array_6 shape: (8, 1)



Shape 메서드를 통한 ndarray의 형태를 변경하는 방법에 대해서 알아보았습니다.

 

감사합니다. 

 

'머신러닝 Machine Learning' 카테고리의 다른 글

Indexing 데이터셋 선택  (2) 2023.12.20
ndarray 데이터 타입  (0) 2023.12.12
Numpy 넘파이  (0) 2023.12.10