코딩 공부/Numpy
[ Numpy ] 파이썬 라이브러리 넘파이 _ 배열 색인
박찬영
2021. 7. 15. 15:10
이번에는 넘파이 배열 색인과 슬라이싱에 대해서 다루겠습니다.
데이터의 부분집합 또는 개별 요소를 선택하는 방법이라고 생각하시면 되는데, 1차원 배열에서는 파이썬 리스트와 비슷하게 동작합니다.
arr[5:8] = 12 처럼 슬라이싱된 배열 조각에 스칼라 값을 대입하면 조각 전체로 브로드캐스팅됩니다.
리스트와의 중요한 차이점은 배열 조각은 원본 배열의 뷰라는 점인데, 데이터는 복사되지 않고 뷰에 대한 변경은 그대로 원본 배열에 반영된다는 점입니다.
이는 넘파이가 대용량의 데이터 처리를 목적으로 만들어졌기 때문에 데이터 복사로 인한 성능과 메모리 문제 발생을 막기 위해서 설계되었다고 합니다.
만약 데이터를 복사하여 얻고 싶다면 다음과 같이 .copy()를 통해서 복사한 배열 조각을 얻을 수 있습니다 .
다차원 배열을 다룰 때는 더 신경을 써서 작성을 해야합니다.
각 색인에 해당하는 요소가 스칼라값이 아니라 1차원 배열이기 때문입니다.
arr2d[0][2] 와 arr2d[0 , 2]는 동일한 표현입니다. arr2d[0][2]는 다차원 배열이기 때문에 재귀적으로 접근을 하는 것입니다.
즉 arr2d[0]의 [2] 로 보는 것입니다.
그러나 이보다 더 직관적으로 콤바로 구분된 색인 리스트를 넘기는 방법이 arr2d[0, 2]가 되겠습니다.
즉 가장 기억해야할 내용은 배열의 부분집합은 모두 배열의 뷰를 반환한다는 점을 기억해야겠습니다.