Numpy 요소선택 인덱싱, 슬라이싱 (indexing, slicing)

파이썬/Numpy|2019.08.07 12:00

넘파이 인덱싱

인덱싱은 배열의 요소에 접근하는 방법이다.

첫번째 행의 두번째 열의 값이라면

arr = np.array([[1, 2, 3, 4],[5, 6, 7, 8]])
arr[0][1] 
2

2가 선택된다. 

 

아래와 같이 ,콤마로 구분해서 선택할 수 도 있다.

arr[0,1]

 

2차원 배열이기 때문에 하나의 숫자만 입력하면 행 전체가 선택된다.

arr[0] 
array([1, 2, 3, 4])

 

배열의 범위를 벗어나게 되면 Index 오류가 뜬다.

arr[5][1] 
IndexError: index 5 is out of bounds for axis 0 with size 2 

 

고차원의 배열도 가장 바깥쪽의 대괄호부터 선택하면 된다.

arr = np.array([[[1, 2, 3, 4], [5, 6, 7, 8]], 
                          [[1, 2, 3, 4], [5, 6, 7, 8]],])
                          
arr.shape 
(2, 2, 4) 

arr[0][1][3]
8

 

슬라이싱

배열의 범위를 선택하는 방법이다.

행렬의 부분집합을 추출할 수 있다.

 

arr = np.array([[[1, 2, 3, 4], [5, 6, 7, 8]], 
                   [[1, 2, 3, 4], [5, 6, 7, 8]], 
                   [[1, 2, 3, 4], [5, 6, 7, 8]],]) 
                   
arr.shape 
(3, 2, 4)

arr[ : , : , : ] 
array([[[1, 2, 3, 4], 
        [5, 6, 7, 8]],
        
        [[1, 2, 3, 4], 
         [5, 6, 7, 8]], 
         
       [[1, 2, 3, 4], 
        [5, 6, 7, 8]]])
        
arr[0:1, 0:2, : ]  
array([[[1, 2, 3, 4],
        [5, 6, 7, 8]]]) 

인덱싱과 같은 위치에서 범위를 지정하게 된다.

: 콜론 앞의 숫자는 시작하는 인덱스, 뒤의 숫자는 끝나는 자리+1이다.

콜론 앞이나 뒤에 숫자를 넣지않으면 숫자가 없는 부분은 처음 또는 끝까지라는 뜻

 

[2 : ]- 2번째 인덱스부터 끝까지

[ : 3] - 처음부터 2번째 인덱스까지

[ : ] - 처음부터 끝까지

 

댓글()