[Python.NumPy] ndarray.reshape - 크기 변환하기

2020. 11. 30. 20:00Python과 머신러닝/NumPy 데이터 분석

0. 요약

 

1. 기본 데이터를 ndarray로 입력하고, .shape을 통해 기대한 값이 나오는지 확인

import numpy as np

test_matrix = [[1, 2, 3, 4],
               [5, 6, 7, 8]] # 2x4 데이터 배열 선언
test_array = np.array(test_matrix)
test_array.shape # 기존의 2x4 확인
  • 지난 포스트에 정리한 np.array.shape을 통해서 기본 데이터가 잘 들어갔는지 확인한다.
  • 생각보다 데이터 입력부터 틀려서 원하는 결과가 나오지 않는 경우도 많으니, 꼭 확인 후에 넘어가는 것이 정신건강에 이롭다.

 

2. .reshape함수를 사용하여 각종 형태로 변환

test_array.reshape(4, 2)  # 4x2로 변환 가능
test_array.reshape(2, 2, 2)  # 총 element 수만 동일하다면, 어떻게든 변환 가능
test_array.reshape(8,)  # (8,) Tuple로 reshape
test_array.reshape(2, 4).shape  # 이렇게 데이터를 변형한 뒤에 다시 shape를 봐도 2x4로 잘 보임
  • .reshape은 말 그대로 array의 크기를 바꿔주는 함수이다.
  • '변환되는 array의 크기(element의 개수)가 같다'는 원칙만 지켜지면, 모든 reshape이 가능하다

 

3. -1 index와 flatten 함수

test_array.reshape(2, -1)  # 2개의 row에 맞춰서 column 수는 알아서 맞춰줘

test_array.flatten()  # .reshape(1,-1)과 동일하게 동작해서 한 row로 변환함
  • -1을 쓰면, row에 맞춰서 column 개수를 맞춰달라는 것으로 해석하여 알아서 4를 사용한다
    (반대로 .reshape(-1, 2)를 하면 4x2의 배열로 reshape 한다)
  • .flatten 함수는 test array를 하나의 row로 변환한다.

 

4. 마무리

  • ndarray의 형태를 바꿔야 하는 경우는 생각보다 많다.
  • 주로 다른 데이터와 통합하여 관리하기 위해서는 형태를 바꿔야 하는데,
  • 이때 사용되는 함수가 .reshape이다
  • 기본 원칙은 '개체 수가 동일하면 reshape은 가능하다'라는 것이다.
  • 이 외에 -1 index 사용법, .flatten에 대해서도 이해했다면 이번 포스트는 마무리된다.