[Numpy] 배열의 재구조화와 합치기

밍키·2020년 8월 5일
0

파이 파이 넘파이

목록 보기
5/6

1. 배열의 재구조화란?


배열의 차수를 변경한다.

1.1 numpy.reshape(a, newshape) 또는 ndarray.reshape(newshape)⭐


  • 내가 원하는대로 형태를 변경할 수 있다. 단, 원소의 개수가 같을 때 변경 가능.
  • 최종적으로 원소수는 같아야한다.
  • a: 형태를 변경할 배열
  • newshape : 변경할 형태 설정.
    • 원소의 개수를 유지하는 shape으로만 변환 가능하다.
    • 1 넣을 수 있음.

1.2 np.newaxis 이용해 차원 늘리기


  • 단순히 차원을 늘릴때 사용한다.
  • 지정한 곳에 size 1인 축을 추가한다.
  • 벡터를 행렬로 바꿀 때사용.

1.2.1 slicing에 사용한다.

1.2.2 indexing에 ... 과 같이 사용

  • ndarray[..., np.newaxis]
  • 첫번째 축이나 마지막 축을 늘릴때만 사용가능

1.3 flatten()⭐


다차원 배열을 1차원으로 만든다.

1.4 numpy.append(), numpy.insert(), numpy.delete()


1.4.1 append(배열, 추가할값, axis=None)

  • 배열의 마지막 index에 추가할값을 추가
  • axis : 축 지정
    - None(기본값) : flatten 한 뒤 추가한다.
  • append()

1.4.2 insert(배열, index, 추가할값, axis=None)

  • 배열의 index에 추가할값을 추가.
  • axis : 축 지정
    - None(기본값) : flatten 한 뒤 삽입한다.
  • insert()

1.4.3 delete(배열, 삭제할index, axis=None)

  • 배열의 삭제할index의 값들을 삭제한다.
  • 삭제할 index는 index 또는 slice
  • axis : 축 지정
    - None(기본값) : flatten 한 뒤 삭제한다.
  • delete()

2. 배열 합치기


조인이랑 비슷하지만 다르다. 단순하게 붙임. 축의 사이즈는 바뀌지만, 축의 개수가 바뀌지는 않는다.

2.1 np.concatenate(합칠 배열리스트, axis=0)


  • 여러 배열을 축의 개수(rank)를 유지하며 합친다.
  • axis 파라미터 : 축지정
    • 지정된 축을 기준으로 합친다.
    • default : 0
  • 합치는 배열의 축의 개수(rank)는 같아야 한다.
  • axis속성으로 지정한 축을 이외의 축의 크기가 같아야 한다.
  • 결과의 축의개수(rank)는 대상 배열의 rank와 같다.
    • 1차원끼리 합치면 1차원결과가 나옴
  • concatenate()

2.2 합칠 대상 배열의 rank가 2일 경우(행렬)


  • vstack()
  • hstack()
  • np.concatenate()의 간단버전

2.2.1 vstack(합칠배열리스트)

  • 수직으로 쌓는다.
  • concatenate() 의 axis=0 와 동일
  • 합칠 배열들의 열수가 같아야 한다.
  • vstack()
    • 아래에 붙이는 개념이므로 열수가 맞아야 한다.
    • axis=0과 동일

2.2.2 hstack(합칠배열리스트)

  • 수평으로 쌓는다.
  • concatenate() 의 axis=1 와 동일
  • 합칠 배열들의 행 수가 같아야 한다.
  • hstack()
    • 옆으로 붙이는 것이므로 행 수가 같아야 한다.
    • axis=1과 동일

3 배열 분할 하기


내가 지정한 축을 제외한 나머지 축은 바뀌지 않는다.

3.1 split(배열, 분할기준, axis)


  • 지정한 축을 기준으로 배열을 나눈다..
  • 반환값: 분할한 narray를 가진 리스트로 리턴.
  • 배열: 분할할 배열
  • 분할기준
    • 정수 : 지정 개수만큼 분할. 쪼개진 애들의 개수가 같아야한다.
    • 리스트 : 분할 기준 index들. 인덱스가 두 개면 세 개로 나누고, 세 개면 네 개로 나눈다.
  • axis(축)
    • 분할할 기준 축을 지정한다. axis = 0 (기본)
    • 2D의 경우 axis=0: 행 기준 분할, axis=1: 열 기준 분할

3.2 vsplit(배열, 분할기준)


  • 행 기준 분할
  • split()의 axis=0과 동일
  • 분할기준
    • 정수 : 지정 개수만큼 분할
    • 리스트 : 분할 기준 index들

3.3 hsplit(배열, 분할기준)


  • 열 기준 분할
  • split()의 axis=1과 동일
  • 분할기준
    • 정수 : 지정 개수만큼 분할
    • 리스트 : 분할 기준 index들 주의: 분할기준을 정수(개수)로 할 경우 분할 후 원소수가 같아야 한다.
profile
대한민국 4차 산업의 역군을 꿈꾸며.

0개의 댓글