모든 것의 토대
NumPy (Numerical Python) 는 Python 의 거의 모든 수치 연산의 토대야. Pandas 가 그 위에 만들어졌고, PyTorch, TensorFlow 가 이걸 말하고, scikit-learn 이 요구해. PyArrow 의 대부분이 호환 배열을 건네줘. ndarray 를 이해하면 modern Python data stack 의 엔진룸을 이해한 거야.
현 stable: NumPy 2.4.4 (2026.3). NumPy 2.0 (2024.6) 이 legacy API 정리한 breaking-change 릴리스였고, 2.0+ 부터 modern 세상.
왜 빨라?
Python 리스트는 포인터 벡터야. 각 요소가 자기 type tag, reference count, allocation 가진 완전한 Python 객체. 백만 요소 리스트 순회하면 백만 번 포인터 dereference + 백만 번 Python 메서드 dispatch.
NumPy ndarray 는 raw 한 typed 값을 담는 single block 의 contiguous memory — 요소별 포인터 없음, 요소별 type tag 없음. 순회는 Python overhead 없는 tight C loop. 리스트에선 초가 걸리는 같은 연산이 배열에선 밀리초.
실제로 뭘 받아?
- 빠른 n차원 배열 — homogeneous typed 데이터, contiguous memory.
- Vectorized 연산 — 요소별 math 가 Python loop 없이 C 속도.
- Broadcasting — 다른 shape 의 배열들이 자동으로 align.
- Universal functions (ufuncs) —
np.sin,np.exp,np.where등, 다 element-wise + 병렬화 가능. - Linear algebra, FFT, random — 수치 toolkit 이 박스에 들어 있어.
- Modern
GeneratorAPI —np.random.default_rng()가 legacy global state 대체.