본문 바로가기

파이썬

Numpy array의 인덱싱과 슬라이싱

인덱싱 : 슬라이싱 = 가리키다 : 잘라내다

 

1D array의 인덱싱과 슬라이싱

 

a[_from : _to]  _to인덱스의 값은 포함하지 않는다.

a[_from : _to]로 슬라이싱 하면 array로 반환되고, a[index]로 인덱싱 하면 값이 반환된다.

 

array a를 슬라이싱하여 얻은 객체 a_slice는 복사(copy)가 된 새로운 객체가 아니고 원래 array의 보기(view)이다. 따라서 보기(view)인 a_slice를 새로운 값으로 바꾸면 원래 array의 값도 변경된다.

 

array a를 슬라이싱하여 a와 독립된 새로운 객체 a_copy를 얻고 싶다면 copy() 메소드를 사용한다. 이 경우 a_copy의 값을 변경하더라도 a의 값은 변함없다.

 

 

2D array의 인덱싱과 슬라이싱 : [ , ] vs. [ ][ ]

 

2D array는 a[row_from : row_to , col_from : col_to] 처럼 행과 열을 콤마(,)로 구별하여 인덱싱과 슬라이싱을 한다.

a[0:3, 2:5]처럼 사용하지만 a[0:3][2:5]의 형태로도 사용할 수 있다. 하지만 이 둘의 결과는 다를 수 있다.

 

콤마를 사용하는 경우는 원 array의 행과 열을 각각 슬라이싱 한 결과를 보이고,

[ ][ ]를 사용하는 경우는 슬라이싱을 순차적으로 수행한다. 즉, 원 array에서 앞의 [ ]에 해당하는 슬라이싱을 수행한 후 그 결과에 뒤의 [ ]에 해당하는 슬라이싱을 수행한다.