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]
'머신러닝 > 넘파이' 카테고리의 다른 글
[Numpy] ndarray 인덱싱(Indexing) 종류와 사용방법(2) - 팬시 인덱싱 (0) | 2021.08.23 |
---|---|
[Numpy] ndarray 인덱싱(Indexing) 종류와 사용방법(1) - 단일 값 추출, 슬라이싱 (0) | 2021.08.22 |
[Numpy] array 생성함수 - arange, ones, zeros, empty (0) | 2021.08.10 |
[Numpy] ndarray 의 axis 축 개념 및 소스 코드 예제 (0) | 2021.08.10 |
[Numpy] ndarray 생성 및 사용 방법 (0) | 2021.08.09 |