본문 바로가기
프로그래밍 ( Programming )/Python

[Python] numpy.reshape의 -1 의미 및 기능

by Jayce_choi 2021. 1. 12.
반응형

 

파이썬의 NumPy를 이용 시 배열 차원(Dimension)을 재구조화 및 변경하고자 할 때 reshape() 함수를 사용합니다.  

예를 들어, 3개의 행과 4개의 열로 구성된 2차원의 배열로 재설정 시 reshape(3, 4)처럼 reshape()의 매개변수로 변경하고자 하는 배열의 행과 열의 차원을 정수로 입력해주면 됩니다. 

한 가지 특별한 것은 reshape(-1, 5) 또는 reshape(2, -1)처럼 함수의 매개변수가 '-1'로 들어가 있는 경우가 있는데 이때 reshape()의 '-1'이 의미하는 바는, 변경된 배열의 '-1' 위치의 차원은 "원래 배열의 길이와 남은 차원으로부터 추정"이 된다는 뜻입니다. (One shape dimension can be -1. In this case, the value is inferred from the length of the array and remaining dimensions.)

- 기존의 예제 (5,2가 들어갔을때 5행 2열의 행렬 생성)

import numpy as np

x = np.arange(10).reshape(5,2)
print(x)
"""
[[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]
 """


 

- reshape(-1, 정수) 일때
: 행 자리에 -1, 그리고 열 위치에 임의의 정수가 있을 때 정수에 따라서 10개의 원소가 해당 열 개수만큼 자동으로 구조화됩니다.

import numpy as np

x = np.arange(10).reshape(-1,5)
print(x)
"""
[[0 1 2 3 4]
 [5 6 7 8 9]]
 """

 

- reshape(정수,-1) 일 때
: 행 자리에 임의의 정수가 위치하고 열 자리에 -1이 위치하였을 때 행의 정수만큼 행이 생성되어서 자동으로 구조화됩니다. 

import numpy as np

x = np.arange(10).reshape(5,-1)
print(x)
"""
[[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]
 """

 

- reshape(-1) , -1 단독으로 있을 때
: -1만 단독으로 있을 경우 다음과 같이 1차원 배열을 반환하게 됩니다. 

import numpy as np

x = np.arange(10).reshape(-1)
print(x)
# [0 1 2 3 4 5 6 7 8 9]

 

* 다만 조건으로는 원소의 개수와 reshape 안의 행과 열의 조합을 통한 행렬의 원소 개수가 동일해야 한다는 것입니다. 예를 들어서 np.arrange(5). reshape(2,3)이라고 한다면 우리가 배치하려는 원소는 5개인데 reshape를 통해서 재구조화하려는 행렬은 2x3 행렬 즉 6개의 원소를 필요로 하기 때문에 생성이 안되고 오류가 생기게 됩니다. 

반응형

댓글