파이썬 기본 리스트 vs NumPy 차이

Sue·2025년 6월 22일
0
post-thumbnail

NumPy 없이도 가능한 배열 조건 필터링!

파이썬 기본 리스트 vs NumPy 차이 완벽 정리

데이터 분석을 하다 보면 배열에 조건을 걸어 필터링하거나 논리 연산을 자주 하게 됩니다.

이럴 때 NumPy를 쓰면 굉장히 간단하게 처리할 수 있는데요, 그럼 꼭 NumPy를 써야만 할까요?

이번 포스트에서는 NumPy를 쓸 때와 쓰지 않을 때를 비교해보며,
기본 파이썬만으로도 동일한 기능을 어떻게 구현할 수 있는지 정리해보겠습니다.


비교할 코드 예시

먼저 두 가지 버전의 코드를 소개합니다.

✅ 1. NumPy 버전

# Create arrays
import numpy as np
my_house = np.array([18.0, 20.0, 10.75, 9.50])
your_house = np.array([14.0, 24.0, 14.25, 9.0])

# my_house greater than 18.5 or smaller than 10
print(np.logical_or(my_house > 18.5, my_house < 10))

# Both my_house and your_house smaller than 11
print(np.logical_and(my_house < 11, your_house < 11))

✅ 2. 파이썬 기본 리스트 버전

# 데이터 정의 (리스트로)
my_house = [18.0, 20.0, 10.75, 9.50]
your_house = [14.0, 24.0, 14.25, 9.0]

# 1. my_house 원소가 18.5보다 크거나 10보다 작은지
result1 = [(x > 18.5) or (x < 10) for x in my_house]
print(result1)  # [False, True, False, True]

# 2. my_house와 your_house 모두 11보다 작은지
result2 = [(m < 11) and (y < 11) for m, y in zip(my_house, your_house)]
print(result2)  # [False, False, False, True]

🔍 결과 비교

조건 내용NumPy 결과리스트 버전 결과
my_house > 18.5 or my_house < 10[False True False True][False, True, False, True]
my_house < 11 and your_house < 11[False False False True][False, False, False, True]

결과는 논리적으로 동일하지만,
NumPy는 np.logical_or과 벡터 연산을 통해 처리하고,
기본 파이썬은 리스트 컴프리헨션과 zip을 통해 처리한다는 점이 다릅니다.


🤔 NumPy와 파이썬 리스트, 뭐가 다를까?

✅ NumPy 배열 (np.array)

  • 벡터 연산이 가능 (예: arr > 10)
  • 연산이 빠르고 메모리 효율적
  • 데이터 타입이 모두 같아야 함
  • 수학/통계 함수가 풍부 (mean, sum, sqrt, ...)

✅ 파이썬 리스트 (list)

  • 여러 타입 혼합 가능 ([1, "hi", True])
  • 벡터 연산은 직접 구현해야 함
  • for 루프, 리스트 컴프리헨션으로 처리
  • 초보자에게는 직관적

✅ 결론

NumPy는 수치 계산과 배열 처리를 빠르게 도와주는 강력한 도구입니다.
하지만 단순한 조건 필터링이라면 굳이 NumPy를 쓰지 않고도 기본 파이썬 리스트 + 리스트 컴프리헨션으로도 충분히 처리할 수 있습니다.

상황에 따라 적절한 도구를 쓰는 것이 중요합니다.
간단한 작업은 리스트, 복잡한 수치 계산은 NumPy!


💡 Tip

NumPy에서 나오는 [False True False True] 같은 결과는
np.bool_ 타입이지만, 기본 파이썬의 True/False동일하게 작동합니다.
단지 출력 형태와 내부 타입만 다를 뿐이에요.


🙋‍♀️ 참고


궁금한 점이나 추가 예제가 필요하면 댓글로 남겨 주세요! 🙂

profile
AI/ML Engineer

0개의 댓글