0Pricing
Python Academy · Lekcja

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 row

Reguł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

  1. Tablice NumPy i dtypes
  2. Operacje na tablicach i broadcasting
  3. Indeksowanie, wycinanie i zaawansowane indeksowanie
  4. Algebra liniowa z NumPy
← Powrót do Python Academy