728x90

두 함수는 주로 딥러닝에서 다차원 배열을 다룰 때 사용되, 텐서의 차원을 축소하거나 확대할 때 자주 사용합니다.

 

np.expnad_dims


import numpy as np
np.expand_dims(data, axis)

 

data : 차원을 추가할 array 또는 tensor입니다.

axis : 확장할 축(차원)의 위치. 값은 정수, 리스트 또는 튜플의 형태로 입력할 수 있습니다.

예시1) axis에 정수를 넣어 2차원 배열을 3차원 배열로 확장하는 경우입니다.

>>> import numpy as np
>>> data = np.arange(12).reshape(3,4)
>>> data
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
       
>>> data1 = np.expand_dims(data, axis=1)
>>> data1.shape
(3, 1, 4)

 

예시2) axis에 리스트를 넣어 2차원 배열을 4차원 배열로 확장하는 경우입니다.

>>> data2 = np.expand_dims(data, axis = [0,2])
>>> data2.shape
(1, 3, 1, 4)

 

np.squeeze


import numpy as np
np.squeeze(data, axis=None)

data : 차원을 축소할 array 또는 tensor입니다.

axis : 축소할 축(차원)의 위치. 값을 정수를 넣어서 특정 차원을 축소하거나 생략하여 차원의 크기가 1인 모든 차원이 제거됩니다.

 

예시1) axis에 정수를 넣은 경우

>>> data = np.arange(9).reshape(1,3,1,3)
>>> data.shape
(1, 3, 1, 3)

>>> data1 = np.squeeze(data, axis=0)
>>> data1.shape
(3, 1, 3)

 

예시2) axis값을 None으로 한 경우

>>> data.shape
(1, 3, 1, 3)


>>> data2 = np.squeeze(data)
>>> data2.shape
(3, 3)

 

728x90