reshape 함수는 배열을 특정 차원 및 크기로 변환한다.
변환을 원하는 크기를 함수 인자로 부여하면 된다.
데이터를 다루다 보면 꽤나 자주 쓰이는걸 알 수 있다.
예제에서는
0 에서 9까지의 1차원 배열을 2차원으로 변환해보자.
#import numpy as np
array1 = np.arange(10) print('array1: \n', array1)
[output]
array1:
[0 1 2 3 4 5 6 7 8 9]
array2 = array1.reshape(2,5) print('array2:\n',array2)
[output]
array2:
[[0 1 2 3 4]
[5 6 7 8 9]]
array3 = array1.reshape(5,2) print('array3:\n', array3)
[output]
array3: [[0 1] [2 3] [4 5] [6 7] [8 9]]
다음 예제에서는
0 에서 11까지의 1차원 배열을 3차원으로 변환해보자.
array4 = np.arange(12) print('array4:\n',array4)
[output]
array4: [ 0 1 2 3 4 5 6 7 8 9 10 11]
array5 = array1.reshape(2,3,2) print('array5:\n', array5)
[output]
array5: [[[ 0 1] [ 2 3] [ 4 5]] [[ 6 7] [ 8 9] [10 11]]]
저번에 이야기 했듯이 차원은 대괄호의 개수로도 알 수 있다.
참고할 점은
reshape 함수는 지정된 사이즈로 변경이 불가능 하고 이는 오류를 발생한다.
가령 (10,) 데이터를 4로우 x 3컬럼 shape 형태로 변경 할 수 없다.
array1.reshape(4,3) --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-27-a40469ec5825> in <module> ----> 1 array1.reshape(4,3) ValueError: cannot reshape array of size 10 into shape (4,3)
(10, ) -> (4, 3) : 10을 4로 나머지가 생긴다. 바꾸는 개수가 나눠지지 않는다면 오류가 발생
reshape 함수를 더욱 효율적으로 사용하는 경우가 인자로 -1 을 적용하는 것이다.
실전에서도 입력인수로 -1 이 들어간 경우가 종종 있다.
-1을 인자로 사용하묜 원래 배열과 호환되는 새로운 shape 으로 변환 해준다.
다음 포스팅에서 확인 바란다.
Reference
https://www.w3schools.com/python/numpy/numpy_array_reshape.asp
NumPy Array Reshaping
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
2. 파이썬 머신러닝 완벽가이드 위키북스 데이터 사이언스 시리즈
'Python' 카테고리의 다른 글
python 으로 csv 파일 합치기 (0) | 2022.01.04 |
---|---|
Numpy 인덱싱 (indexing) (0) | 2022.01.03 |
Numpy.reshape ( -1 ) (0) | 2022.01.02 |
Numpy.arange, zeros, ones (0) | 2021.12.26 |
Numpy.ndarray (0) | 2021.12.26 |