English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
현재 배열에서 일부 요소를 꺼내 새 배열을 생성하는 것을 필터링(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]
예제는 다음을 반환합니다 [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)
실행 결과:
[False, False, True, True, True] [63 64 65]
필터 배열을 생성하여 원래 배열의 짝수 요소만 반환하는 예제:
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)
실행 결과:
[False, True, False, True, False, True, False] [2 4 6]
이 예제는 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)
실행 결과:
[False False True True True] [63 64 65]
필터 배열을 생성하여 원래 배열의 짝수 요소만 반환하는 예제:
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)
실행 결과:
[False True False True False True False] [2 4 6]