[NumPy] 02. 넘파이 배열 인덱싱과 슬라이싱(Arrays Indexing, Arrays Slicing)

반응형

 

두 번째로는 인덱싱과 슬라이싱에 관한 것이다.

사실 파이썬에서도 리스트의 인덱싱, 슬라이싱 공부를 한 적이 있다.

하지만 넘파이는 다차원의 배열을 포함하니 복잡한 부분이 생기기 시작했다.

차원을 생각하여 인덱싱과 슬라이싱을 하는 것을 유념해야 된다.

 

 

-----------

02. 인덱싱과 슬라이싱 (Indexing & Slicing)

 

 

1) 배열 인덱싱 Arrays Indexing

 

배열 요소에 접근하는 것과 같다.

# 1차원 배열 

import numpy as np
a = np.array([1,2,3,4,5])
print(a[0])                       # 첫 번째 요소에 접근(이 위치의 값을 가져오기)
>> 1
print(a[2]+a[3]).             # 두 번째 요소와 세 번째 요소 더하기
>> 7

 

- 2차원의 경우 인덱싱 시 [행,열] 을 뜻한다. 

# 2차원 배열
a = np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a[0,1])                # 0행의 1열 요소에 접근하는 것
>> 2

 

- 3차원의 경우 인덱싱은 첫 번째 배열 요소의 두 번째 배열 요소의 세 번째 배열 요소를 접근하는 것

# 3차원 배열
a = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print(a)
>> [[[1,2,3]                                        
         [4,5,6]]
        [[7,8,9]
          [10,11,12]]]
print(a[0,1,2])          
>> 6

 

*  첫 번째 배열 0과 1 중 0, 두 번째 배열 0과 1 중 1, 세 번째 배열 0, 1, 2 중 2   

첫 번째 배열 0 = [[1,2,3],[4,5,6]] / 1 = [[7,8,9],[10,11,12]]

두 번째 배열 0 = [1,2,3] / 1 = [4,5,6]

세 번째 배열 0 = 4 / 1 = 5 / 2 = 6

 

- 네거티브 인덱싱

a = np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a[1,-1]).    # -1 : 제일 마지막 요소
>> 10

 

 

2) 배열 슬라이싱 Arrays Slicing

배열 슬라이싱은 [ : ] ➤ 주어진 인덱스에서 다른 인덱스로 요소를 가져오는 것

 

 - [ start : end ] (*end 인덱스는 제외)

a = np.array([1,2,3,4,5,6,7])
print(a[1:5])
>> [2,3,4,5]
print(a[4:])            # index 4에서 끝까지
>> [5,6,7]
print(a[:4])           # 처음부터 index 3까지 (end index 4전까지)  
>> [1,2,3,4]
print(a[-3:-1])      # 마지막에서 숫자 계산, 마지막 index의 3번째부터 1번째 전까지
>> [5,6]

 

- [ start : end : step ] : step (건너뛸 간격) 슬라이싱 단계 설정

a = np.array([1,2,3,4,5,6,7])
print(a[1:5:2])             # 요소 1부터 4에서 2 step씩 건너뛴 요소
>> [2,4]
print(a[::2])                # 전체에서 2 step씩 건너뛴 요소
>> [1,3,5,7]

 

- 2차원 배열 슬라이싱

a = np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a[1,1:4])    # 0과 1 두 요소 중 두 번째 요소에서 1에서 4 전까지 요소를 슬라이싱함.
>> [7,8,9]
print(a[0:2,2])   # 두 요소 [1,2,3,4,5]와 [6,7,8,9,10]에서 인덱스 2를 반환
>> [3,8]
print(a[0:2,1:4])
>> [[2,3,4]
        [7,8,9]]
반응형