NumPy 배열 필터링
- 이전 페이지 NumPy 배열 정렬
- 다음 페이지 NumPy 랜덤
배열 필터링
존재하는 배열에서 일부 요소를 꺼내서 새 배열을 생성하는 것을 필터링(filtering)라고 합니다。
NumPy에서는 부울 인덱스 목록을 사용하여 배열을 필터링합니다。
부울 인덱스 목록은 배열의 인덱스와 일치하는 부울 값 목록입니다。
인덱스에 있는 값이 True
그럼 그 요소는 필터된 배열에 포함됩니다;인덱스에 있는 값이 False
그럼 그 요소는 필터된 배열에서 제외됩니다。
예제
인덱스 0과 2, 4에 있는 요소로 배열을 생성하면:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) x = [True, False, True, False, True] newarr = arr[x] print(newarr)
위의 예제는 다음을 반환합니다 [61, 63, 65]
그 이유는 무엇인가요?
새 필터는 필터 배열에 값이 있는 필터만 포함하기 때문에 True
의 값을 설정했기 때문에, 이 경우 인덱스는 0과 2, 4입니다.
필터 배열을 생성
위의 예제에서 우리는 True
와 False
값은 고정되어 있지만, 일반적으로 조건에 따라 필터 배열을 생성하는 용도로 사용됩니다。
예제
62보다 큰 값만 반환하는 필터 배열을 생성하려면:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) # 빈 리스트를 생성합니다 filter_arr = [] # arr의 각 요소를 순회합니다 for element in arr: # 만약 요소가 62보다 크다면, 값이 True로 설정되며, 그렇지 않으면 False로 설정됩니다: if element > 62: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
예제
원래 배열의 짝수 요소만 반환하는 필터 배열을 생성하려면:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) # 빈 리스트를 생성합니다 filter_arr = [] # arr의 각 요소를 순회합니다 for element in arr: # 요소가 2로 나누어 떨어지면 True로 설정하고, 그렇지 않으면 False로 설정합니다 if element % 2 == 0: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
직접 배열에서 필터 생성
이 예제는 NumPy에서 매우 일반적인 작업이며, NumPy는 이 문제를 해결하는 좋은 방법을 제공합니다.
조건에서 배열을 iterable 변수 대신 바로 대체할 수 있으며, 예상대로 작동합니다.
예제
62보다 큰 값만 반환하는 필터 배열을 생성하려면:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) filter_arr = arr > 62 newarr = arr[filter_arr] print(filter_arr) print(newarr)
예제
원래 배열의 짝수 요소만 반환하는 필터 배열을 생성하려면:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) filter_arr = arr % 2 == 0 newarr = arr[filter_arr] print(filter_arr) print(newarr)
- 이전 페이지 NumPy 배열 정렬
- 다음 페이지 NumPy 랜덤