머신러닝/넘파이

[Numpy] ndarray 크기 변경 reshape()

shoney9254 2021. 8. 21. 22:49
반응형

ndarray 크기를 변경하는 함수로 reshape를  사용한다. 

 

1. reshape

ndarray의 개수가 10개 이기 때문에, reshape 에서 (2,5) 또는 (5,2) 등 총 개수가 맞게 입력해야한다. 

소스 코드

# 1. reshape

# reshape는 ndarray의 갯수가 맞게 입력해야한다.

array1 = np.arange(10)

print('array1:\n', array1)

 

array2 = array1.reshape(2, 5)

print('array2:\n', array2)

 

array3 = array1.reshape(5, 2)

print('array3:\n', array3)

 

# 10개 밖에 없는데, 4*1 = 4개로 reshape를 하면 에러발생

# array1.reshape(4,1)

 

결과

array1:
 [0 1 2 3 4 5 6 7 8 9]
array2:
 [[0 1 2 3 4]
 [5 6 7 8 9]]
array3:
 [[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]

만약에 4,1 처럼 개수가 맞지 않게 입력한다면, 아래와 같이 에러가 발생합니다. 

소스 코드

# 10개 밖에 없는데, 4*1 = 4개로 reshape를 하면 에러발생

array1.reshape(4, 1)

결과

 

2-1. reshape에서 -1 사용 : 가변 변수

위에서는 reshape를 양의 자연수만 입력했다. 하지만, -1을 입력할 경우 가변해서 reshape를 할 수 있다. 

예시를 보면 이해하기 쉽다. 

소스 코드

# -1을 사용해서 reshape를 하게되면 크기에 맞게 가변변수가 된다.

array4 = array1.reshape(-1, 2)

print('array4:\n', array4)

 

array5 = array1.reshape(2, -1)

print('array5:\n', array5)

결과

array4:
 [[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]
array5:
 [[0 1 2 3 4]
 [5 6 7 8 9]]

array4는 열이 2개를 기준으로 5개의 행을 알아서 만드는 것을 확인 할 수 있다. 

array5는 행이 2개고, 열을 5개로 하는 ndarray를 만드는 것을 확인 할 수 있다. 

 

2-2. reshape(-1, 1)

위의 내용과 동일한 내용이다. 기준을 1로 줬을때의 결과를 확인해보자

소스 코드

array6 = array1.reshape(1, -1)

print('array6:\n', array6)

 

array7 = array1.reshape(-1, 1)

print('array7:\n', array7)

결과

array6:
 [[0 1 2 3 4 5 6 7 8 9]]
array7:
 [[0]
 [1]
 [2]
 [3]
 [4]
 [5]
 [6]
 [7]
 [8]
 [9]]

물론 모두 -1로 입력했을 경우에는 당연하게 에러가 발생한다. (컴퓨터에게 알아서 하라는 의미가 된다)

소스 코드

# 모두 -1을 입력하면 에러가 발생한다.

array6 = array1.reshape(-1, -1)

print('array6:\n', array6)

결과

 

4. reshape(-1,) : 1차원 ndarray로 변경

1차원 ndarray로 변경하는기 위해서는 reshape(-1,) 으로 입력하면 된다.

소스 코드

array8 = array1.reshape(-1,)

print('array8:\n', array8)

결과

array8:
 [0 1 2 3 4 5 6 7 8 9]

 

반응형