Maxima's Lab

[Python] 1-1. Numpy (넘파이) - ndarray & reshape 본문

Python/Numpy

[Python] 1-1. Numpy (넘파이) - ndarray & reshape

Minima 2022. 6. 17. 22:38
728x90
SMALL

안녕하세요, 오늘은 Numpy (넘파이)의 "ndarray" 에 대하여 알아보겠습니다.

여기 ndarray는 N-dimensional array (즉, N차원 배열)를 의미합니다.

먼저, 다음과 같이 예시를 들어보겠습니다.

 


▶ 1차원 배열 및 다차원 배열의 예시

 

  • 1차원 배열의 예시
import numpy as np

array_a = np.array([1, 2, 3])
print(type(array_a))
print(array_a.ndim)

Output  :

<class 'numpy.ndarray'>
1

 

위의 결과와 같이 type() 함수를 통해 numpy.ndarray 라는 것을 확인하였고, .ndim을 통해 배열 차원의 수를 확인하였습니다.

조금 더 차원의 수가 많은 경우는 다음과 같습니다.

 

  • 다차원 배열의 예시

 

import numpy as np

array_a = np.random.randint(0, 256, (64, 64, 3))
print(type(array_a))
print(array_a.ndim)

Output : 

 

<class 'numpy.ndarray'>
3

위의 예시는 이미지를 다룰 때 많이 사용하는 (Height, Width, Channel)의 형태와 유사하게 3-차원 배열을 생성하였습니다.
(참고로, np.random.randint() 함수를 통해 0이상 256미만의 정수를 무작위로 생성하여 size=(64, 64, 3)로 배열을 만들었다고 생각해주시면 됩니다.)

 


▶ N 차원 배열에 reshape 적용 하기

 

N차원 배열에 적용하는 reshape()라는 함수를 사용하여 새로운 shape으로 변환 시켜주는 과정을 진행해보겠습니다.

 

import numpy as np

array_a = np.random.randint(0, 256, (100, 64, 64, 3))
print(array_a.shape)
print(array_a.reshape(64, 3, 64, 100).shape)

Output : 

 

(100, 64, 64, 3)
(64, 3, 64, 100)

위의 예시와 같이, 기존 배열의 shape을 구성하는 숫자를 모두 이용하여, reshape를 할수도 있으며, 다음과 같이 shape을 구성하는 숫자 또는 각 차원을 구성하는 숫자를 곱한 값인 (100*64*64*3)의 약수들을 이용해서 reshape를 할 수도 있습니다.

 

import numpy as np

array_a = np.random.randint(0, 256, (100, 64, 64, 3))
print(array_a.shape)
print(array_a.reshape(-1, 32, 5).shape)

Output : 

 

(100, 64, 64, 3)
(7680, 32, 5)

 

위의 예시와 같이, (100 * 64 * 64 * 3) = 1,228,800의 약수들인 32와 5를 사용하였으며,

-1이라는 숫자는 1,228,800 / (32 * 5) = 7680 값으로 나머지 shape을 구성한다고 보시면 됩니다

 


오늘은 Numpy(넘파이)의 ndarray (N-차원 배열)을 생성하는 방법에 대해서 알아보고 해당 배열들의 shape을 변환하는 방법에 대해서 알아보았습니다.

728x90
LIST
Comments