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 |