소개
이 랩에서는 NumPy 의 고급 인덱싱 (advance indexing) 에 대해 배우게 됩니다. 고급 인덱싱은 선택하려는 요소가 특정 순서로 배열되지 않은 경우, ndarray 의 서로 다른 행과 열에서 임의의 요소를 선택하는 데 사용되는 기술입니다.
VM 팁
VM 시작이 완료되면, 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접근하세요.
때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한 사항으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.
학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.
필요한 라이브러리 가져오기 및 NumPy 배열 생성
먼저, numpy 라이브러리를 임포트하고 고급 인덱싱을 수행할 NumPy 배열을 생성해야 합니다.
import numpy as np
x = np.array([[11, 28], [23, 84], [95, 56]])
print("The original array")
print(x)
위 코드에서는 numpy 라이브러리를 임포트하고 고급 인덱싱에 사용할 NumPy 배열을 생성했습니다.
정수 인덱싱
정수 인덱싱을 사용하여 N 차원 인덱스를 기반으로 임의의 항목을 선택할 수 있습니다. 각 정수 배열은 해당 차원에 대한 인덱스 수를 나타내는 데 사용됩니다.
y = x[[0, 1, 2], [0, 0, 1]]
print("The output after integer indexing")
print(y)
위 코드에서는 NumPy 배열 x에 대해 정수 인덱싱을 수행하고 선택된 요소를 포함하는 새 배열 y를 생성합니다. NumPy 배열 x의 각 행에서 지정된 열의 한 요소를 선택하고 있습니다. 행 인덱스는 모든 행 번호를 포함하고, 열 인덱스는 선택할 요소를 지정합니다.
불리언 인덱싱
불리언 인덱싱은 비교 연산자 또는 다른 연산자를 사용하여 특정 조건을 기반으로 ndarray 에서 요소를 선택하려는 경우에 사용됩니다.
print("The items greater than 11 are:")
print(x[x > 11])
위 코드에서는 NumPy 배열 x에 대해 불리언 인덱싱을 수행하고 있습니다. NumPy 배열 x에서 11 보다 큰 요소를 반환합니다.
고급 인덱싱과 기본 인덱싱 결합
하나의 슬라이스 (:) 또는 줄임표 (...) 를 인덱스 배열과 함께 사용하여 고급 인덱싱과 기본 인덱싱을 결합할 수 있습니다.
z = x[1:4, 1:3]
print("After using basic slicing")
print(z)
y = x[1:4, [1, 2]]
print("After slicing using advance index for column")
print(y)
위 코드에서는 NumPy 배열 x를 슬라이싱하고 있습니다. 열에 대해 기본 슬라이싱과 고급 인덱싱을 사용하고 있습니다.
NaN 값 제거
보수 연산자 (~) 를 사용하여 Not A Number (NaN) 값을 제거할 수 있습니다.
a = np.array([np.nan, 1, 12, np.nan, 3, 41, 54])
print("After omitting NaN the output array is :")
print (a[~np.isnan(a)])
위 코드에서는 보수 연산자 (~) 를 사용하여 NumPy 배열 a에서 Not A Number (NaN) 값을 제거하고 있습니다.
복소수가 아닌 숫자 제거
iscomplex 함수를 사용하여 배열에서 비복소수를 필터링할 수 있습니다.
a = np.array([1, 2+6j, 5, 3.5+5j])
print("After filtering the non-complex numbers :")
print (a[np.iscomplex(a)])
위 코드에서는 iscomplex 함수를 사용하여 NumPy 배열 a에서 비복소수를 필터링하고 있습니다.
요약
이 랩에서는 NumPy 라이브러리에서 ndarray 요소의 다양한 고급 인덱싱 유형에 대해 배웠습니다. NumPy 에서 고급 인덱싱의 다양한 사용 사례에 대한 몇 가지 예제를 다루었습니다. 이 기술을 사용하여 NumPy 배열의 서로 다른 행과 열에서 임의의 요소를 선택할 수 있습니다.