본문 바로가기
데이터 분석

Numpy ndarray 인덱싱, 슬라이싱

by ma_ro 2020. 2. 29.

ndarray 인덱싱

  • 파이썬의 리스트와 동일한 개념으로 사용
  • ,를 이용하여 각 차원의 인덱스에 접근 가능
  • 인덱싱을 통해 차원이 변경될 수 있다.
x = np.arange(36).reshape(3, 4, 3)
x[1]
#3차원 1번 인덱스를 반환 
#3차원에서 2차원으로 변경됨.

ndarray 슬라이싱

  • 리스트, 문자열의 슬라이싱과 동일한 개념으로 사용
  • , 를 사용하여 각 차원 별로 슬라이싱 가능
  • 인덱싱과 달리 슬라이싱을 해도 차원이 줄지는 않음
x = np.arange(10).reshape(2, 5)
# [[0 1 2 3 4]
#  [5 6 7 8 9]]

x[:, 1:4]
# 행은 전체, 열은 1번 인덱스 이상 4번 인덱스 미만
# array([[1, 2, 3],
#        [6, 7, 8]])

행렬 인덱싱

정수 배열 혹은 불리언 배열을 인덱서로 사용한 인덱싱 방법이다. 대괄호 ( Bracket, [] ) 안의 정보를 숫자나 슬라이스가 아닌 ndarray 행렬로 받는다.

  • 불리언 ( Boolean ) 행렬 인덱싱
    • True인 원소만 선택
    • 인덱스의 크기가 행렬의 크기와 같아야 한다.
  • 정수 행렬 인덱싱
    • 지정된 위치의 원소만 선택
    • 인덱스의 크기가 행렬의 크기와 달라도 된다.
    • 같은 원소를 반복해서 가리킬 경우, 원래 원 행렬보다 커질 수 있다.
x = np.random.randint(1, 100, size=10)
x[x % 2 == 0] 

불리언 방식을 활용하여 위와 같이 필터를 만들어 젹용 할 수도 있다. ndarray 객체의 경우 벡터화 연산이 가능하기 때문에 객체 자체에 연산을 할 수 있다. 연산을 통해 반환된 ndarray 객체를 불리언 행렬 인덱서로 활용 한다.

'데이터 분석' 카테고리의 다른 글

Numpy Broadcasting  (0) 2020.02.29
Numpy 기본 함수  (0) 2020.02.29
Numpy ndarray shape 변경  (0) 2020.02.29
Numpy ndarray 생성  (0) 2020.02.29
Numpy 개요  (0) 2020.02.29

댓글