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 (Numerical Python) to podstawowa biblioteka do obliczeń numerycznych. Wszystkie inne biblioteki DS (Pandas, Scikit-learn) są na niej zbudowane!
1pip install numpy1import 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 3x31arr = 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 danych1# 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)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 11arr = 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 # Transpozycja1A = 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)