Adventure Time - Finn 3
본문 바로가기
AI/파이썬

numpy - shape (차원) 변경하기

by hyun9_9 2026. 4. 6.

ravel(), np.ravel()

  • [ˈrævl]
  • 다차원배열을 1차원으로 변경 (흔히 '펼친다'라고 말함)
  • 'order' 파라미터
    • 'C' - row 우선 변경 , C style
    • 'F - column 우선 변경, Fortran style
  • ravel() 은 np 안에 일반 함수로도 있고, 혹은 ndarray 의 멤버함수로서도 존재
 

flatten()

  • 다차원 배열을 1차원으로 변경
  • ravel과의 차이점:
    • copy를 생성하여 변경함(즉 원본 데이터가 아닌 복사본을 반환)
    • ndarray 의 멤버함수로만 제공됨
  • 'order' 파라미터
    • 'C' - row 우선 변경
    • 'F - column 우선 변경
x = np.arange(15).reshape(3, 5)

x.ravel()  # (3, 5) -> (15,)
np.ravel(x)
x.flatten()
# array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])

 

 

reshape 함수

  • array의 shape을 다른 차원으로 변경
  • 주의할점은 reshape한 후의 결과의 전체 원소 개수(size)와 이전 개수가 같아야 가능
  • 사용 예) 이미지 데이터 벡터화 - 이미지는 기본적으로 2차원 혹은 3차원(RGB)이나 트레이닝을 위해 1차원으로 변경하여 사용 됨
  • -1 값을 주어 나머지 차원을 유추하게 할수 있다

 

x2 = np.arange(36)
"""
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
       34, 35])
"""

x2.reshape(6, 6)

# -1 의 차원 크기가 유추되어 reshape 된다  => (6, 6)
x2.reshape(6, -1)

"""
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23],
       [24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35]])
"""



x2.reshape(6, -1, 2)  # (6, 3, 2)

 

차원 확장 / 제거

  • 차원 확장/제거 하는 동작도 머신러닝에서 많이 사용된다.
  • reshape() 로 차원 변환(확장/제거) 자유롭게 가능

차원 확장 : np.expand_dims()

  • axis= 로 지정된 '차원을 추가'한다.

차원 자동 제거 : squeeze, np.squeeze()

  • 차원 중 사이즈가 1인 것을 찾아 스칼라값으로 바꿔 해당 '차원을 제거'한다.

 

x3 = np.arange(6)  # (6,)
# array([0, 1, 2, 3, 4, 5])

# (6,) => (6, 1) 로 차원 확장
x3 = x3.reshape(6, 1)

# 1차원으로 축소 (차원 제거)
x3.reshape((6,))

# squeeze() 사용. 차원크기가 1인 차원을 제거  (6, 1, 1) => (6,)
x3.squeeze()

 

 

x5 = np.arange(3)  # (3,)

# expand_dims 사용: 0번째 차원축(axis) 에 새로운 차원 추가(삽입)
y5= np.expand_dims(x5, axis=0)   # (3,) -> (1, 3)


x6 = np.arange(4).reshape(2, 2)
# 마지막에 차원축 추가
# (2, 2) => (2, 2, 1)
y7 = np.expand_dims(x6, -1)


x8 = np.array([2, 0, 1, 8])  # (4,)
y8 = x8[np.newaxis, :]  # (4,) -> (1, 4)
# np.newaxis 사용. (4,) => (4, 1)
a2 = x8[:, np.newaxis]

 

 

transpose, T, swapaxes

전치행렬 (transpose matrix) , 차원 축 바꾸기

a = np.arange(15).reshape(3, 5)

# transpose. (3, 5) => (5, 3)
np.transpose(a)

# .T
a.T

# swapaxes() 사용. axis 0 과 axis 1 을 바꾸기
# (3, 5) => (5, 3)
np.swapaxes(a, 0, 1)

'AI > 파이썬' 카테고리의 다른 글

pandas - Series  (0) 2026.04.09
numpy - Boolean Indexing  (0) 2026.04.08
numpy - axis (차원축)  (0) 2026.04.07
numpy(2)  (0) 2026.04.05
numpy(1)  (0) 2026.04.03