[Python.NumPy] ndarray.reshape - 크기 변환하기
2020. 11. 30. 20:00ㆍPython과 머신러닝/NumPy 데이터 분석
0. 요약
- ndarray의 형태를 바꿔야 하는 경우는 생각보다 많다.
- 그래서 NumPy는 ndarray 배열의 재배치를 지원하는 .reshape 함수를 제공한다.
- 이 함수를 어떻게 사용할 수 있는지, 그 외의 -1 indexing과 .flatten() 함수의 용도를 알아보자.
- 관련 글
2020/11/30 - [Python과 머신러닝/Python 데이터 수집] - NumPy의 ndarray 이해하기
2020/11/30 - [Python과 머신러닝/Python 데이터 수집] - NumPy의 ndarray indexing과 slicing
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에 대해서도 이해했다면 이번 포스트는 마무리된다.
'Python과 머신러닝 > NumPy 데이터 분석' 카테고리의 다른 글
[Python.NumPy] arange/zeros/empty 함수의 차이 - Creation Function I (0) | 2020.12.04 |
---|---|
[Python.NumPy] ndarray indexing과 slicing (0) | 2020.11.30 |
[Python.NumPy] ndarray 이해하기 (0) | 2020.11.30 |
[Python.NumPy] Y값 모델링 및 모델 평가 방법론 (0) | 2020.11.30 |
[Python.NumPy] 벡터/행렬 선언하기 및 벡터곱 연산하기 (0) | 2020.11.30 |