Repolode
pydata

pydata/numexpr

NumPy 배열 수식을 청크 단위로 계산해 메모리 사용량을 줄이고 여러 코어를 활용하는 고속 표현식 평가기입니다.

스타
2,544
포크
233
열린 이슈
18
마지막 커밋
7일 전

어떤 프로젝트인가요?

NumExpr는 '3*a+4*b' 같은 NumPy 배열의 수치 표현식을 일반 Python으로 계산할 때보다 더 빠르고 적은 메모리로 평가합니다. 중간 결과용 임시 배열을 만들지 않고, CPU 캐시에 들어가는 작은 청크 단위로 데이터를 처리합니다.

청크를 사용 가능한 CPU 코어에 분배하므로 여러 스레드에서 계산을 병렬로 수행할 수 있습니다. 일반적인 수학 함수와 문자열 배열 비교도 지원합니다. MKL을 사용해 빌드하면 Intel MKL/VML 지원으로 초월 함수 계산을 더 빠르게 처리할 수 있습니다.

NumPy 대비 성능 향상 폭은 표현식과 배열 크기에 따라 달라지며, 프로젝트 설명에 따르면 일반적으로 배열이 크고 표현식이 복잡할수록 가장 큽니다.

핵심 기능

  • 01중간 임시 배열을 만들지 않고 배열 표현식을 평가합니다.
  • 02작업을 캐시 크기에 맞는 청크로 나눠 CPU 코어에 분배합니다.
  • 03일반적인 수학 함수와 문자열 배열 비교를 지원합니다.
  • 04초월 함수 계산을 위한 Intel MKL/VML 선택적 가속을 지원합니다.
  • 05pip 또는 conda로 설치할 수 있습니다.

활용 사례

  • NumPy 배열의 대규모 요소별 계산을 빠르게 처리합니다.
  • Pandas 또는 PyTables 쿼리처럼 큰 배열을 필터링하거나 조건을 계산합니다.
  • 배열 연산이 많은 수치 코드의 메모리 사용량을 줄입니다.

빠른 시작

  1. 1

    pip으로 PyPI에서 설치

    pip install numexpr
  2. 2

    Anaconda 또는 Miniconda를 사용하는 경우 conda로 설치할 수도 있습니다

    conda install numexpr
  3. 3

    NumPy 배열에서 식을 평가

    python -c "import numpy as np, numexpr as ne; a = np.arange(1e6); print(ne.evaluate('a + 1'))"

사용 전 알아둘 점

  • 매우 간단한 식에서는 속도 향상 폭이 작으며, 큰 배열에서 가장 효과적입니다.
  • pip wheel에는 Intel MKL 지원이 포함되어 있지 않습니다. MKL은 NumPy가 MKL을 사용하는 경우 conda 빌드에서만 사용할 수 있습니다.
  • 프로젝트가 향후 운영을 위한 후원을 모색하고 있어 장기적인 유지 관리가 불확실합니다.

토픽

자주 묻는 질문

numexpr은(는) 무엇인가요?
NumPy 배열 수식을 청크 단위로 계산해 메모리 사용량을 줄이고 여러 코어를 활용하는 고속 표현식 평가기입니다. NumExpr는 '3*a+4*b' 같은 NumPy 배열의 수치 표현식을 일반 Python으로 계산할 때보다 더 빠르고 적은 메모리로 평가합니다. 중간 결과용 임시 배열을 만들지 않고, CPU 캐시에 들어가는 작은 청크 단위로 데이터를 처리합니다.
numexpr은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
numexpr은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
numexpr은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. numexpr의 마지막 커밋은 2026년 10월 13일입니다.
numexpr은(는) 어디에 사용할 수 있나요?
NumPy 배열의 대규모 요소별 계산을 빠르게 처리합니다. Pandas 또는 PyTables 쿼리처럼 큰 배열을 필터링하거나 조건을 계산합니다. 배열 연산이 많은 수치 코드의 메모리 사용량을 줄입니다.
numexpr는 어떻게 설치하나요?
pip으로 PyPI에서 설치: pip install numexpr Anaconda 또는 Miniconda를 사용하는 경우 conda로 설치할 수도 있습니다: conda install numexpr NumPy 배열에서 식을 평가: python -c "import numpy as np, numexpr as ne; a = np.arange(1e6); print(ne.evaluate('a + 1'))"
numexpr은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/pydata/numexpr

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트