Indexing & Slicing

Namung's Sea·2021년 10월 27일
0

NIPA AI 온라인 교육

목록 보기
9/18
post-thumbnail

찾고 잘라내기

  • Indexing : 인덱스로 값을 찾아냄
  • ⭐ 인덱스는 0번째부터 시작한다는 사실! 꼭 체크!
x = np.arange(7) # numpy 라이브러리는 이미 import 해둔 것으로 가정
print(x) # [0 1 2 3 4 5 6]
ptint(x[3]) # 3
print(x[7]) # IndexError: index 7 is out of bounds
x[0] = 10 # 인덱싱으로 원하는 위치의 자료를 바꾸는 것도 가능함.
print(x) # [10 1 2 3 4 5 6]
x = np.arange(1, 13, 1) # 1부터 12까지, 간격은 +1
x.shape = 3, 4 # 3x4의 2차원 배열
print(x) # [[1 2 3 4]
          # [5 6 7 8]
          # [9 10 11 12]]
print(x[2, 3]) # 12 | 세로로 2번째, 가로로 3번째
  • slicing : 인덱스의 값으로 배열의 일부분을 가져옴
    start부터 end-1까지의 값을 가져온다.
x = np.arange(7) # numpy 라이브러리는 이미 import 해둔 것으로 가정
print(x) # [0 1 2 3 4 5 6]
print(x[1:4]) # [1 2 3]
print(x[1:] ) # [1 2 3 4 5 6]
print(x[:4] ) # [0 1 2 3]
print(x[::2]) # [0 2 4 6] | [::2] <- 마지막 2는 간격! 2의 간격을 두고 불러와라
x = np.arange(1, 13 ,1)
x.shape = 3, 4
print(x) # [[ 1 2 3 4]
          # [ 5 6 7 8]
	  # [ 9 10 11 12]] 
print(x[1:2,:2:3]) # [[5]] | [1:2,:2:3] -> [1:2]는 1만 해당, [:2:3]은 2까지인데 3의 간격을 두는 거여서 5만 해당됨.
print(x[1:,:2]) # [[ 5 6]
                #  [ 9 10]]

Boolean indexing

  • Boolean indexing : 배열의 각 요소의 선택 여부를 Boolean mask를 이용하여 지정하는 방식
    • Boolean : True or False
    • 예)
      1. 조건에 맞는 데이터를 가져옴.
      2. 참인지 거짓인지 알려줌.
x = np.arange(7) # numpy 라이브러리는 이미 import 해둔 것으로 가정

# Boolean mask? True, False로 구성된 mask array

print(x) # [0 1 2 3 4 5 6]
print(x < 3) # [True True True False False False False]
print(x > 7) # [False False False False False False False]
x = np.arange(7)

# Boolean mask의 True 요소에 해당하는 index만을 조회

print(x[x < 3]) # [0 1 2]
print(x[x % 2 == 0]) # [0 2 4 6]

Fancy indexing

  • Fancy indexing : 배열의 각 요소 선택을 index배열을 전달하여 지정하는 방식
x = np.arange(7) # numpy 라이브러리는 이미 import 해둔 것으로 가정
print(x) # [0 1 2 3 4 5 6]
print(x[[1, 3, 5]]) # [1 3 5] | x 배열의 1번째, 3번째 5번째 인덱스에 무엇이 있는가?
x = np.arange(1, 13 ,1).reshape(3, 4)
print(x) # [[ 1 2 3 4]
         # [ 5 6 7 8]
         # [ 9 10 11 12]]
print(x[[0, 2]]) # [[ 1 2 3 4] | 0번째 인덱스 행, 2번째 인덱스 행의 값은 무엇인가?
                 # [ 9 10 11 12]]

Indexing & Slicing

  • 원하는 요소를 지정하기 위해 IndexingSlicing을 적절히 조합하여 사용 가능
x = np.arange(1, 13 ,1).reshape(3, 4) # numpy 라이브러리는 이미 import 해둔 것으로 가정
print(x) # [[ 1 2 3 4]
         # [ 5 6 7 8]
         # [ 9 10 11 12]]
print(x[1:2, 2]) # [7]
print(x[[0, 2], 2] # [ 3 11] | 0번째 인덱스 행, 2번재 인덱스 행에서 2번째 열의 값은?
print(x[[0, 2], :2]) # [[ 1 2]
                     #  [ 9 10]]

[실습 4] Indexing & slicing

문제 (따라해보기)

  1. Indexing을 통해 값 2를 answer1에 저장해보세요.
  2. Slicing을 통해 매트릭스 일부인 9, 10을 가져와 answer2에 저장해보세요.
  3. Boolean indexing을 통해 5보다 작은 수를 찾아 answer3에 저장해보세요.
  4. Fancy indexing을 통해 두 번째 행만 추출하여 answer4에 저장해보세요.

code

import numpy as np

matrix = np.arange(1, 13, 1).reshape(3, 4)
print(matrix)

# 1. Indexing을 통해 값 2를 출력해보세요.
answer1 = matrix[0,1]

# 2. Slicing을 통해 매트릭스 일부인 9, 10을 가져와 출력해보세요.
answer2 = matrix[2:, :2]

# 3. Boolean indexing을 통해 5보다 작은 수를 찾아 출력해보세요.
answer3 = matrix[matrix<5]

# 4. Fancy indexing을 통해 두 번째 행만 추출하여 출력해보세요.
answer4 = matrix[[1]]

# 위에서 구한 정답을 출력해봅시다.
print(answer1)
print(answer2)
print(answer3)
print(answer4)

실행 결과

[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]

2

[[ 9 10]]

[1 2 3 4]

[[5 6 7 8]]

profile
개발자로 시작| 공부한 것을 기록합니다.

0개의 댓글