[python] 데이터 변환(Reshape) 방법

데이터 변환(reshape)은 데이터의 구조를 다른 형태로 변환하는 작업을 의미합니다. 파이썬에서는 numpy 라이브러리를 사용하여 데이터를 변환할 수 있습니다. 이번 글에서는 numpy를 이용한 데이터의 reshape 방법을 알아보겠습니다.

1. reshape 함수

numpy의 reshape 함수를 사용하면 배열의 구조를 지정한 형태로 변환할 수 있습니다. reshape 함수의 사용법은 다음과 같습니다.

numpy.reshape(array, newshape)

여기서 array는 변환할 배열을 의미하고, newshape는 변환 후의 형태를 정의하는 튜플입니다.

예를 들어, 다음과 같이 1차원 배열을 2행 3열의 2차원 배열로 변환할 수 있습니다.

import numpy as np

array = np.array([1, 2, 3, 4, 5, 6])
reshaped_array = np.reshape(array, (2, 3))

print(reshaped_array)

결과는 다음과 같이 나타납니다.

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

2. reshape vs. resize

reshape 함수와 비슷한 기능을 가진 resize 함수도 있습니다. 그러나 reshape 함수는 변환된 배열을 반환하는 반면, resize 함수는 원본 배열을 직접 변환합니다. 따라서, resize 함수는 원본 배열과 크기가 다른 배열로 변환할 수 있으며, 빈 공간은 0으로 채워집니다.

예를 들어, 다음과 같이 3행 4열의 배열을 2행 5열로 변환할 수 있습니다.

import numpy as np

array = np.array([[1, 2, 3, 4],
                  [5, 6, 7, 8],
                  [9, 10, 11, 12]])

resized_array = np.resize(array, (2, 5))

print(resized_array)

결과는 다음과 같이 나타납니다.

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

3. 차원 추가

reshape 함수를 사용하면 배열에 차원을 추가할 수도 있습니다. 이때, 차원을 추가한 위치에 1을 포함한 튜플 형태의 크기를 지정합니다.

예를 들어, 다음과 같이 1차원 배열에 차원을 추가하여 2행 2열의 3차원 배열로 변환할 수 있습니다.

import numpy as np

array = np.array([1, 2, 3, 4])
reshaped_array = np.reshape(array, (2, 2, 1))

print(reshaped_array)

결과는 다음과 같이 나타납니다.

[[[1]
  [2]]

 [[3]
  [4]]]

4. 차원 제거

reshape 함수를 사용하여 배열의 차원을 제거할 수도 있습니다. 이때, 차원을 제거할 위치에 -1을 포함한 튜플 형태의 크기를 지정하면 됩니다.

예를 들어, 다음과 같이 2행 2열의 3차원 배열을 1차원 배열로 변환할 수 있습니다.

import numpy as np

array = np.array([[[1], [2]],
                  [[3], [4]]])

reshaped_array = np.reshape(array, (-1))

print(reshaped_array)

결과는 다음과 같이 나타납니다.

[1 2 3 4]

5. 참고 문서

이 글에서는 numpy를 사용한 데이터 변환(reshape) 방법에 대해 알아보았습니다. reshape 함수를 통해 배열의 구조를 다양한 형태로 변환하고, 차원을 추가하거나 제거할 수 있습니다. numpy 라이브러리의 reshape 함수를 잘 활용하면 데이터 전처리 작업 등에서 효율적으로 데이터를 다룰 수 있습니다.