Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds

NumPy - obliczenia numeryczne

Witaj w Module 8, @name! Darwin tutaj z Data Science - nauką o danych! 📊🐍

Analogia Safari: Data Science to jak system analityczny Safari - zbierasz dane o zwierzętach, analizujesz trendy populacji, wizualizujesz wyniki i podejmujesz decyzje na ich podstawie! 🦁📈

NumPy - fundament Data Science

NumPy (Numerical Python) to podstawowa biblioteka do obliczeń numerycznych. Wszystkie inne biblioteki DS (Pandas, Scikit-learn) są na niej zbudowane!

Instalacja

1pip install numpy

Tworzenie tablic

1import numpy as np
2
3# Z listy
4arr = np.array([1, 2, 3, 4, 5])
5print(arr)  # [1 2 3 4 5]
6
7# Tablica 2D - macierz
8matrix = np.array([
9    [1, 2, 3],
10    [4, 5, 6],
11    [7, 8, 9]
12])
13
14# Specjalne tablice
15zeros = np.zeros((3, 4))       # Macierz 3x4 zer
16ones = np.ones((2, 3))         # Macierz 2x3 jedynek
17identity = np.eye(3)           # Macierz jednostkowa 3x3
18range_arr = np.arange(0, 10, 2) # [0, 2, 4, 6, 8]
19linspace = np.linspace(0, 1, 5) # [0, 0.25, 0.5, 0.75, 1]
20random_arr = np.random.rand(3, 3)  # Losowa macierz 3x3

Atrybuty tablicy

1arr = np.array([[1, 2, 3], [4, 5, 6]])
2
3print(arr.shape)   # (2, 3) - wymiary
4print(arr.ndim)    # 2 - liczba wymiarów
5print(arr.size)    # 6 - liczba elementów
6print(arr.dtype)   # int64 - typ danych

Operacje na tablicach

1# Dane Safari - populacje w różnych rezerwatach
2populations = np.array([120, 450, 85, 200, 330])
3
4# Podstawowe statystyki
5print(np.mean(populations))   # 237.0 - średnia
6print(np.median(populations)) # 200.0 - mediana
7print(np.std(populations))    # 135.4 - odchylenie std
8print(np.min(populations))    # 85
9print(np.max(populations))    # 450
10print(np.sum(populations))    # 1185
11
12# Operacje wektorowe (broadcasting)
13growth = populations * 1.1  # Wzrost o 10%
14normalized = (populations - np.mean(populations)) / np.std(populations)

Indeksowanie i wycinanie

1arr = np.array([10, 20, 30, 40, 50])
2
3# Indeksowanie
4print(arr[0])      # 10 - pierwszy element
5print(arr[-1])     # 50 - ostatni element
6
7# Wycinanie (slicing)
8print(arr[1:4])    # [20 30 40]
9print(arr[:3])     # [10 20 30]
10print(arr[::2])    # [10 30 50] - co drugi
11
12# Boolean indexing - filtrowanie
13endangered = arr[arr < 30]  # [10 20]
14
15# 2D indexing
16matrix = np.array([[1,2,3], [4,5,6], [7,8,9]])
17print(matrix[0, 1])   # 2 - wiersz 0, kolumna 1
18print(matrix[:, 0])   # [1 4 7] - cała kolumna 0
19print(matrix[1, :])   # [4 5 6] - cały wiersz 1

Reshape i manipulacja kształtem

1arr = np.arange(12)  # [0, 1, 2, ..., 11]
2
3# Zmiana kształtu
4matrix = arr.reshape(3, 4)  # Macierz 3x4
5flat = matrix.flatten()     # Spłaszczenie do 1D
6transposed = matrix.T       # Transpozycja

Działania na macierzach

1A = np.array([[1, 2], [3, 4]])
2B = np.array([[5, 6], [7, 8]])
3
4# Element-wise operations
5print(A + B)  # Dodawanie
6print(A * B)  # Mnożenie element-wise
7
8# Mnożenie macierzowe
9print(A @ B)  # lub np.dot(A, B)
10
11# Algebra liniowa
12print(np.linalg.det(A))       # Wyznacznik
13print(np.linalg.inv(A))       # Macierz odwrotna
14eigenvalues, eigenvectors = np.linalg.eig(A)
Przejdź do CodeWorlds