English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

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]

예제는 다음을 반환합니다 [61, 63, 65]왜 그런가요?

새 필터는 필터 배열의 값이 있는 필터만 포함합니다 True 의 값에 대해, 따라서 이 경우 인덱스 0과 2、4.

필터 배열을 생성합니다

예제에서 TrueFalse 값은 고정되어 있지만 일반적으로 조건에 따라 필터 배열을 생성합니다.

크기만큼 반환하는 배열을 생성하는 예제: 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]