Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

NumPy를 활용해 주어진 범위 내의 배열 요소만 골라내는 방법

이 글에서는 NumPy 배열에서 주어진 범위에 속하는 요소들을 찾아 출력하는 방법을 알아봅니다. 이를 위해 numpy.where()numpy.logical_and() 두 가지 함수를 활용합니다.

동작 원리

두 함수는 다음과 같이 함께 작동합니다.

  • np.logical_and(): 두 조건(예: 4 이상, 20 이하)을 동시에 만족하는 요소에 대해 불리언 마스크를 생성합니다.
  • np.where(): 해당 불리언 마스크에서 True인 위치의 인덱스를 반환합니다.

알고리즘

1. NumPy 배열을 정의합니다.
2. np.where()np.logical_and()를 사용해 주어진 범위 내의 숫자를 찾습니다.
3. 결과를 출력합니다.

예제 코드

import numpy as np

arr = np.array([1,3,5,7,10,2,4,6,8,10,36])
print("Original Array:\n",arr)

result = np.where(np.logical_and(arr>=4, arr<=20))
print(result)

실행 결과

Original Array:
[ 1  3  5  7 10  2  4  6  8 10 36]
(array([2, 3, 4, 6, 7, 8, 9], dtype=int64),)

결과 해석

출력된 결과는 값 자체가 아니라, np.where()의 조건을 만족하는 요소들의 인덱스 위치입니다. 위 예제에서 인덱스 2, 3, 4, 6, 7, 8, 9에 해당하는 값들(5, 7, 10, 4, 6, 8, 10)이 모두 4 이상 20 이하 범위에 포함됩니다.

참고: 실제 값을 추출하려면?

인덱스가 아닌 실제 요소 값을 얻고 싶다면 불리언 인덱싱을 직접 사용하는 것이 더 간단합니다.

result = arr[(arr>=4) & (arr<=20)]
print(result)
# [ 5  7 10  4  6  8 10]

이처럼 & 연산자로 두 조건을 결합하면 범위 내의 실제 값들이 배열 형태로 바로 반환됩니다.