.size
- 차원 정보 없이 원소의 개수 출력
.reshape
- array의 shape을 다른 차원으로 변경
- reshape한 후의 결과의 전체 원소 개수와 이전 개수가 같아야 가능
- 이미지 데이터 벡터화에 사용 (2차원 혹은 3차원(RGB)을 트레이닝을 위해 1차원으로 변경)
x = np.arange(24)
y = x.reshape(4, 6)
z = x.reshape(3, 2, 4)
print("x :", x)
print("y :", y)
print("z :", z)
x : [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
y : [[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]]
z : [[[ 0 1 2 3]
[ 4 5 6 7]]
[[ 8 9 10 11]
[12 13 14 15]]
[[16 17 18 19]
[20 21 22 23]]]
.ravel
-
다차원배열을 1차원으로 변경
-
'order' 파라미터
- 'C' : row 우선 변경
- 'F : column 우선 변경
np.ravel(y, order='F')
array([ 0, 6, 12, 18, 1, 7, 13, 19, 2, 8, 14, 20, 3, 9, 15, 21, 4,
10, 16, 22, 5, 11, 17, 23])
.flatten
- ravel과 동일한 기능이지만 copy를 생성하여 변경
인덱싱
- 파이썬 리스트와 동일한 개념으로 사용
- 각 차원의 인덱스에 접근 가능
y[1], z[2,0,-1]
(array([ 6, 7, 8, 9, 10, 11]), 19)
슬라이싱
- 파이썬의 리스트, 문자열의 slicing과 동일한 개념으로 사용
- 각 차원별 슬라이싱 가능
z[1, :, 1:3]
array([[ 9, 10],
[13, 14]])
.concatenate
np.concatenate((a1, a2, ...), out=None)
- 가로 결합 : axis = 0 (default)
- 세로 결합 : axis =1
벡터데이터 결합
data1 = np.array([1, 2, 3])
data2 = np.array([4, 5, 6])
np.c_[data1, data2]
array([[1, 4],
[2, 5],
[3, 6]])
np.r_[data1, data2]
array([1, 2, 3, 4, 5, 6])
split
np.split(ary, indices_or_sections, axis=0)
np.vsplit(ary, indices_or_sections)
np.hsplit(ary, indices_or_sections