인덱싱, indexing, 색인
특징
- 차원축소가 일어납니다.
- 1차 배열을 인덱싱하면 스칼라가되고, 2차 배열을 인덱싱하면 1차 배열이 됩니다.
arr = np.array([[1,2,3], [4,5,6], [7,8,9]])
arr, arr.ndim
arr[0], arr[0].ndim
# 2차원 배열을 인덱싱하면 1차 배열이 된다.
arr[2][2], arr[-1][-1], arr[2][2].ndim
# 2차원 배열을 두번 인덱싱하면 스칼라가 된다.
불리언 인덱싱
arr >= 5
# 배열의 모든 원소들에 접근하여서 0과 비교하여 T/F 값으로 돌려줍니다
arr[arr>=5]
# 불리언 인덱싱 결과 차원이 축소되었습니다.
t = (arr >= 5) & (arr < 8)
# 5이상 8미만을 동시에 만족하는
h = (arr <= 2) | (arr > 7)
# 2이하와 7초과 둘 중 하나라도 만족하는
펜시 인덱싱
- 비연속적인 데이터들을 추출할 수 있습니다.
arr[[2, 0, 1]]
arr[[2, 0, 1], [1]]
# arr[[2, 0, 1]]에서 중간에 있는 수를 뽑아내기 위해서
# 좌표처럼 [ (2, 1) / (0, 1) / (1, 1) ] 뽑습니다.
arr[[2, 0, 1], [1, 2, 2]]
# 좌표처럼 [ (2, 1) / (0, 2) / (1, 2) ] 뽑습니다.
arr[[2,1,0]][:2, [2,1,0]]
# 펜시 인덱싱을 사용하고도 차원을 유지하고 싶을 경우
스칼라값 수정 => copy
# 원소 1개 값을 연산해서 수정하였습니다.
# .copy() : 배열을 복사해서 수정하였습니다.
arr[2][2] = arr[2][2] * 10
arr[0] = arr[1].copy()
arr
배열 재정립, 형태수정 => reshape
# 0~15까지 수를 데이터4개 특성4개의 형태로 뽑습니다.
arr = np.arange(16).reshape((4,4))
arr
슬라이싱, slicing, 자르기
특징
- 차원을 유지합니다.
abc[ : 5], abc[0 : 7 : 2]
# 1~5번 째까지 뽑아냅니다.
# 1~6번 째까지 2 간격으로 뽑아냅니다.
다차원 슬라이싱
- 2차원 [ : , : ]
- 3차원 [ : , : , : ]
arr[1:3, : 2]
arr[1, :2]
# 인덱싱을 한 번 표현했기 때문에 1차원이 축소되었습니다.
'파이썬(Python)' 카테고리의 다른 글
판다스 / pandas 1 - 기본생성, 외부에서 데이터 호출, 데이터 기본 점검 (0) | 2021.08.04 |
---|---|
넘파이 / numpy 5 - 선형대수, 저장 및 로드, 압축 (0) | 2021.08.04 |
넘파이 / numpy 4 - 축 변경, 유니버셜 함수 (0) | 2021.08.04 |
넘파이 / numpy 2 - 배열타입, 배열 랜덤 생성, 기본 연산 (0) | 2021.08.03 |
넘파이 / numpy 1 - 개념, 배열생성, 배열복제 (0) | 2021.08.03 |