본문 바로가기

PYTHON/Numpy

shape

.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

'PYTHON > Numpy' 카테고리의 다른 글

기본함수  (0) 2019.12.29
랜덤함수  (0) 2019.12.28
생성함수  (0) 2019.12.28
basic  (0) 2019.12.28