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 |