🖥️ IT, 컴퓨터/🐍 Python

[Numpy] reshape(?,?) : 배열 형태 바꾸는 메소드

김 홍시 2024. 6. 12. 13:10
반응형

reshape(-1, 1)은 NumPy 배열의 형태를 변경하는 데 사용되는 메서드입니다. reshape 메서드는 배열의 차원을 지정된 형태로 바꿉니다. 여기서 -1은 크기를 자동으로 계산하라는 의미입니다. reshape(-1, 1)은 배열을 하나의 열(column vector)로 변환하는 데 사용됩니다.

reshape 메서드의 사용법

reshape 메서드는 배열의 형태를 바꾸기 위해 사용됩니다. 기본 형식은 다음과 같습니다:

array.reshape(new_shape)
  • new_shape: 원하는 형태를 나타내는 튜플(tuple)입니다. 각 차원의 크기를 지정합니다. 하나의 차원에 -1을 사용하면, 해당 차원의 크기는 자동으로 계산됩니다.

reshape(-1, 1)의 의미

reshape(-1, 1)은 배열을 하나의 열로 변환하는 것을 의미합니다:

  • -1: 자동으로 크기를 계산합니다. 입력 배열의 길이에 따라 적절한 크기로 계산됩니다.
  • 1: 두 번째 차원의 크기를 1로 설정합니다. 즉, 하나의 열을 의미합니다.

예제

다양한 예제를 통해 설명해보겠습니다.

1차원 배열을 열 벡터로 변환

import numpy as np

# 1차원 배열 생성
arr = np.array([1, 2, 3, 4, 5, 6])

# 배열을 열 벡터로 변환
column_vector = arr.reshape(-1, 1)
print(column_vector)

출력:

[[1]
 [2]
 [3]
 [4]
 [5]
 [6]]

2차원 배열을 특정 형태로 변환

# 2차원 배열 생성
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])

# 배열을 열 벡터로 변환
column_vector_2d = arr_2d.reshape(-1, 1)
print(column_vector_2d)

출력:

[[1]
 [2]
 [3]
 [4]
 [5]
 [6]]

행 벡터로 변환하기

비슷한 방식으로 reshape(1, -1)을 사용하면 배열을 하나의 행(row vector)으로 변환할 수 있습니다.

# 1차원 배열을 행 벡터로 변환
row_vector = arr.reshape(1, -1)
print(row_vector)

출력:

[[1 2 3 4 5 6]]

요약

  • reshape(-1, 1)은 배열을 하나의 열로 변환합니다.
  • -1은 해당 차원의 크기를 자동으로 계산하라는 의미입니다.
  • 1은 두 번째 차원의 크기를 1로 설정하여 하나의 열을 만듭니다.
  • 이를 통해 1차원 또는 다차원 배열을 열 벡터로 변환할 수 있습니다.

reshape 메서드는 배열의 형태를 변경하는 데 사용되며, 배열의 각 차원의 크기를 지정하는 튜플을 인자로 받습니다. 여기서 -1은 자동으로 크기를 계산하라는 의미로 사용되지만, 다른 숫자를 사용할 수도 있습니다. reshape 메서드의 작동 방식을 이해하기 위해 다양한 예제를 통해 설명해 보겠습니다.

예제

1차원 배열을 다양한 형태로 변환

먼저, 1차원 배열을 생성해보겠습니다.

import numpy as np

# 1차원 배열 생성
arr = np.array([1, 2, 3, 4, 5, 6])
2x3 배열로 변환
reshaped_2x3 = arr.reshape(2, 3)
print(reshaped_2x3)

출력:

[[1 2 3]
 [4 5 6]]
3x2 배열로 변환
reshaped_3x2 = arr.reshape(3, 2)
print(reshaped_3x2)

출력:

[[1 2]
 [3 4]
 [5 6]]
자동 계산을 사용하여 2행으로 변환

여기서 하나의 차원을 -1로 지정하면 남은 차원이 자동으로 계산됩니다.

reshaped_2x_auto = arr.reshape(2, -1)
print(reshaped_2x_auto)

출력:

[[1 2 3]
 [4 5 6]]
자동 계산을 사용하여 3행으로 변환
reshaped_3x_auto = arr.reshape(3, -1)
print(reshaped_3x_auto)

출력:

[[1 2]
 [3 4]
 [5 6]]

2차원 배열을 다양한 형태로 변환

이제 2차원 배열을 생성해보겠습니다.

# 2차원 배열 생성
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
1차원 배열로 변환 (평탄화)
flattened = arr_2d.reshape(-1)
print(flattened)

출력:

[1 2 3 4 5 6]
3x2 배열로 변환
reshaped_3x2_2d = arr_2d.reshape(3, 2)
print(reshaped_3x2_2d)

출력:

[[1 2]
 [3 4]
 [5 6]]
6x1 배열로 변환
reshaped_6x1 = arr_2d.reshape(6, 1)
print(reshaped_6x1)

출력:

[[1]
 [2]
 [3]
 [4]
 [5]
 [6]]

규칙 요약

  1. 차원의 크기를 명시적으로 지정:

    • reshape(2, 3)과 같이 모든 차원의 크기를 명시적으로 지정하면 그 형태로 배열이 변경됩니다.
    • 모든 차원의 크기의 곱은 원래 배열의 크기와 일치해야 합니다.
  2. 자동 계산 사용:

    • 하나의 차원을 -1로 지정하면, 해당 차원의 크기는 자동으로 계산됩니다.
    • 예를 들어, reshape(2, -1)은 두 번째 차원의 크기를 자동으로 계산하여 2행 배열을 만듭니다.
  3. 다차원 배열 평탄화:

    • reshape(-1)을 사용하여 다차원 배열을 1차원 배열로 평탄화할 수 있습니다.

오류 발생 시

  • 지정된 크기의 곱이 원래 배열의 크기와 일치하지 않으면 ValueError가 발생합니다.
  • 예를 들어, arr.reshape(3, 4)을 시도하면 배열의 크기가 6인데 12로 맞추려고 해서 오류가 발생합니다.

이와 같이 reshape 메서드는 다양한 형태로 배열을 변환하는 데 유용하며, -1을 사용하여 자동으로 차원의 크기를 계산할 수 있습니다.

반응형