Operacje na tablicach i broadcasting
Proszę wykonywać zwektoryzowane działania arytmetyczne i poznawać zasady broadcastingu.
Operacje na tablicach i broadcasting to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.
Arytmetyka wektorowa
NumPy wykonuje operacje arytmetyczne element po elemencie na całych tablicach, bez pętli Pythona — w zoptymalizowanym kodzie C.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b) # [5 7 9]
print(a * b) # [4 10 18]
print(a ** 2) # [1 4 9]Funkcje uniwersalne (ufuncs)
Funkcje ufunc biblioteki NumPy wykonują funkcje na poziomie C dla każdego elementu: np.sqrt, np.exp, np.log, np.sin itd.
import numpy as np
x = np.linspace(0, np.pi, 5)
print(np.sin(x)) # [0. 0.707 1. 0.707 0.]
print(np.exp([1.0, 2.0, 3.0])) # [2.718 7.389 20.086]Operacje redukcji
Tablicę można zredukować do skalaru (lub tablicy o mniejszej liczbie wymiarów) za pomocą np.sum, np.mean, np.max, np.min, np.std.
import numpy as np
m = np.array([[1, 2, 3], [4, 5, 6]])
print(np.sum(m)) # 21
print(np.sum(m, axis=0)) # [5 7 9] — sum each column
print(np.sum(m, axis=1)) # [6 15] — sum each rowReguły broadcastingu
Broadcasting rozszerza mniejsze tablice, aby dopasować je do większych — bez kopiowania danych. Reguła jest następująca: wymiary są dopasowywane od prawej strony, a wymiary o rozmiarze 1 są rozszerzane.
import numpy as np
a = np.array([[1], [2], [3]]) # shape (3,1)
b = np.array([10, 20, 30]) # shape (3,)
print(a + b)
# [[11 21 31]
# [12 22 32]
# [13 23 33]]Operacje skalarne z broadcastingiem
Skalar jest rozszerzany na wszystkie elementy tablicy.
import numpy as np
arr = np.arange(6).reshape(2, 3)
print(arr + 10)
# [[10 11 12]
# [13 14 15]]
print(arr * 0.5)
# [[0. 0.5 1. ]
# [1.5 2. 2.5]]Operacje porównania i operacje logiczne
Porównania tworzą tablice wartości logicznych. Należy je łączyć za pomocą &, |, ~ (a nie operatorów Pythona and/or/not).
import numpy as np
arr = np.array([1, 5, 3, 8, 2])
print(arr > 3) # [False True False True False]
print(arr[(arr > 2) & (arr < 7)]) # [5 3]where()
np.where(condition, x, y) zwraca elementy z x tam, gdzie wartość to True, oraz z y tam, gdzie wartość to False.
import numpy as np
arr = np.array([-2, 3, -1, 4, 0])
result = np.where(arr >= 0, arr, 0) # clip negatives to 0
print(result) # [0 3 0 4 0]Agregacje wzdłuż osi
Argument axis= pozwala redukować dane wzdłuż określonego wymiaru tablicy wielowymiarowej.
import numpy as np
data = np.arange(12).reshape(3, 4)
print(data.mean(axis=0)) # mean of each column → shape (4,)
print(data.mean(axis=1)) # mean of each row → shape (3,)cumsum i diff
np.cumsum oblicza sumy skumulowane, a np.diff oblicza różnice między kolejnymi elementami.
import numpy as np
prices = np.array([100, 110, 105, 115])
print(np.cumsum(prices)) # [100 210 315 430]
print(np.diff(prices)) # [10 -5 10] (daily changes)Wektorowe operacje na łańcuchach
np.char udostępnia wektorowe operacje na łańcuchach znaków w tablicach.
import numpy as np
words = np.array(["apple", "banana", "cherry"])
print(np.char.upper(words)) # ['APPLE' 'BANANA' 'CHERRY']
print(np.char.startswith(words, "a")) # [True False False]Wydajność w porównaniu z listami Pythona
NumPy jest od 10 do 100 razy szybszy od równoważnych pętli Pythona w obliczeniach numerycznych, ponieważ wykonuje kod C bez narzutu interpretera Pythona.
import numpy as np, time
n = 1_000_000
start = time.perf_counter()
python_sum = sum(i**2 for i in range(n))
print(f"Python: {time.perf_counter()-start:.3f}s")
arr = np.arange(n)
start = time.perf_counter()
numpy_sum = (arr**2).sum()
print(f"NumPy: {time.perf_counter()-start:.3f}s")Szybkie sprawdzenie
Jaki kształt będzie miał wynik dodawania tablicy o kształcie (3,1) do tablicy o kształcie (3,)?
Podsumowanie
Operacje NumPy są wykonywane element po elemencie w języku C (bez pętli Pythona). Broadcasting rozszerza zgodne kształty bez kopiowania danych. Argumentu axis= należy używać do redukcji wzdłuż określonych wymiarów. Funkcje ufunc (np.sin, np.exp itd.) wykonują operacje na poszczególnych elementach z szybkością kodu C.
Często zadawane pytania
Czy lekcja „Operacje na tablicach i broadcasting” jest bezpłatna?
Tak — pełny tekst „Operacje na tablicach i broadcasting” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Operacje na tablicach i broadcasting”?
Proszę wykonywać zwektoryzowane działania arytmetyczne i poznawać zasady broadcastingu. Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Python Academy?
Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Operacje na tablicach i broadcasting”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?
Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Tablice NumPy i dtypes
- Operacje na tablicach i broadcasting
- Indeksowanie, wycinanie i zaawansowane indeksowanie
- Algebra liniowa z NumPy