Definicja #
NumPy (Numerical Python) to biblioteka języka Python do wydajnych obliczeń numerycznych na wielowymiarowych tablicach i macierzach. Stanowi fundament całego ekosystemu Python data science — praktycznie każda inna biblioteka (pandas, SciPy, scikit-learn, PyTorch, TensorFlow) opiera się na strukturach danych NumPy lub z nimi współpracuje.
Kluczowe elementy NumPy:
- ndarray — centralny obiekt NumPy: n-wymiarowa tablica o jednorodnym typie danych; znacznie wydajniejsza niż listy Python dzięki ciągłemu obszarowi pamięci i operacjom wektorowym
- Broadcasting — mechanizm pozwalający wykonywać operacje na tablicach różnych kształtów bez ręcznego powielania danych; fundamentalny dla efektywnego kodu numerycznego
- Operacje wektorowe (ufunc) — operacje matematyczne (dodawanie, mnożenie, sin, exp) wykonywane na całych tablicach naraz, zaimplementowane w C — do 100x szybsze niż pętle Python
- Indeksowanie i slicing — zaawansowane indeksowanie: podstawowe (
arr[1:3]), fancy indexing (arr[[0,2,4]]), boolean masking (arr[arr > 0]) - Algebra liniowa —
np.linalg: mnożenie macierzy (np.dot,@), wyznacznik, wartości własne, dekompozycje SVD/QR - Generatory liczb losowych —
np.random: generowanie tablic losowych z różnych rozkładów (normalny, jednostajny, Poissona) - Integracja z C/C++/Fortran — NumPy jest napisany w C i eksponuje C API; biblioteki numeryczne (LAPACK, BLAS) są wywoływane bezpośrednio
NumPy jest obowiązkowym elementem zestawu narzędzi każdego data scientista i ML engineera pracującego w Pythonie.
Zastosowania #
- Przetwarzanie danych numerycznych — manipulacja macierzami i tablicami jako podstawa pipeline'ów data science i machine learning
- Algebra liniowa w ML — mnożenie macierzy, transformacje, dekompozycje; implementacja algorytmów ML od podstaw
- Przetwarzanie obrazów — obrazy jako tablice NumPy (height x width x channels); biblioteki OpenCV i Pillow zwracają/przyjmują ndarrays
- Symulacje naukowe i obliczenia inżynierskie — modelowanie fizyczne, symulacje Monte Carlo, obliczenia statystyczne
- Prototypowanie algorytmów ML przed optymalizacją w PyTorch/TensorFlow
Ścieżka nauki #
NumPy to obowiązkowy pierwszy krok dla każdego, kto zaczyna przygodę z data science lub ML w Pythonie.
Zacznij od:
- Instalacja:
pip install numpy; import konwencjonalnie jakoimport numpy as np - Tworzenie tablic:
np.array(),np.zeros(),np.ones(),np.arange(),np.linspace() - Podstawowe operacje: kształt (
shape), typ (dtype), reshaping (reshape), transpozycja (.T) - Slicing i indeksowanie — podstawa efektywnego kodu NumPy
Następnie pogłębiaj:
- Broadcasting — zrozumienie zasad pozwoli pisać zwięzły i szybki kod bez pętli
np.linalg— algebra liniowa;np.random— generatory losowe- Integracja z pandas (
DataFrameopiera się na NumPy) i matplotlib (wizualizacja tablic NumPy) - Profilowanie: kiedy NumPy jest wolny i kiedy warto sięgnąć po Numba (JIT) lub CuPy (GPU)
FAQ #
- Czym różni się lista Python od tablicy NumPy?
- Lista Python może zawierać elementy różnych typów i jest przechowywana jako tablica wskaźników — każdy element to osobny obiekt Python. Tablica NumPy jest jednorodna (jeden typ danych) i przechowywana jako ciągły blok pamięci w C. Operacje NumPy są wykonywane wektorowo w C — mogą być 10-100x szybsze niż pętle na listach.
- Co to jest broadcasting w NumPy?
- Broadcasting to mechanizm pozwalający na wykonywanie operacji matematycznych na tablicach o różnych kształtach bez kopiowania danych. Np. dodanie liczby skalarnej do tablicy 2D, lub tablicy 1D do tablicy 2D — NumPy automatycznie 'rozszerza' mniejszą tablicę zgodnie z regułami broadcastingu. Jest to kluczowy mechanizm wydajnego kodu numerycznego.
- Czy NumPy działa na GPU?
- Standardowy NumPy działa tylko na CPU. Dla obliczeń GPU istnieje CuPy — biblioteka oferująca niemal identyczne API jak NumPy, ale wykonująca obliczenia na kartach NVIDIA (CUDA). PyTorch i TensorFlow mają własne tensory obsługujące GPU i są preferowane w deep learningu.
- Jaka jest relacja NumPy z pandas i scikit-learn?
- pandas DataFrame'y wewnętrznie przechowują dane jako tablice NumPy. scikit-learn przyjmuje i zwraca tablice NumPy. Matplotlib wizualizuje tablice NumPy. NumPy jest warstwą fundamentową — znajomość jego API jest wymagana do efektywnej pracy z całym ekosystemem data science w Pythonie.
- Ile zarabia Data Scientist znający NumPy?
- NumPy to bazowa umiejętność data scientistów — sama w sobie nie jest wyróżnikiem. Data Scientist z NumPy, pandas, scikit-learn i doświadczeniem w ML zarabia w Polsce od 12 000 do 25 000 zł brutto. Wyższe widełki dotyczą specjalistów z deep learningiem (PyTorch/TensorFlow) i doświadczeniem produkcyjnym.