0Pricing
Pandas & NumPy Academy · Lekcja

Działania arytmetyczne element po elemencie

Dodawać, odejmować, mnożyć i dzielić tablice element po elemencie oraz rozumieć, jak NumPy eliminuje potrzebę stosowania jawnych pętli w Pythonie

Działania arytmetyczne element po elemencie to bezpłatna lekcja Pandas & NumPy Academy na CoddyKit. To lekcja 3 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 Pandas & NumPy Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.

Problem z pętlami Pythona

Dodawanie list w czystym Pythonie wymaga powolnej pętli. NumPy wykonuje je za pomocą szybkiego kodu C — często od 10 do 100 razy szybciej. Ta technika nazywa się wektoryzacją. ⚡

# Python list approach -- slow
a = [1, 2, 3, 4]
b = [10, 20, 30, 40]
result = [x + y for x, y in zip(a, b)]
print(result)  # [11, 22, 33, 44]

# NumPy approach -- fast
import numpy as np
na, nb = np.array(a), np.array(b)
print(na + nb)  # [11 22 33 44]

Dodawanie i odejmowanie

Operatory + i - działają na tablicach o tym samym kształcie element po elemencie, dopasowując odpowiadające sobie pozycje w jednym szybkim przebiegu.

import numpy as np

a = np.array([10, 20, 30])
b = np.array([1, 2, 3])

print(a + b)   # [11 22 33]
print(a - b)   # [ 9 18 27]

Mnożenie i dzielenie

Operatorów * i / należy używać do mnożenia i dzielenia element po elemencie — należy pamiętać, że * nie oznacza mnożenia macierzy. Dzielenie zawsze zwraca liczby zmiennoprzecinkowe, nawet gdy dane wejściowe są całkowite.

import numpy as np

a = np.array([10, 20, 30])
b = np.array([2, 4, 5])

print(a * b)    # [ 20  80 150]
print(a / b)    # [5.  5.  6.]
print(a // b)   # [5 5 6]
print(a % b)    # [0 0 0]

Działania na skalarach (wprowadzenie do broadcastingu)

Po dodaniu pojedynczej liczby do tablicy NumPy zastosuje ją do każdego elementu. To najprostszy przykład broadcastingu — świetnie nadaje się do przesuwania lub skalowania danych.

import numpy as np

a = np.array([1, 2, 3, 4, 5])

print(a + 10)   # [11 12 13 14 15]
print(a * 2)    # [ 2  4  6  8 10]
print(a ** 2)   # [ 1  4  9 16 25]
print(a / 10)   # [0.1 0.2 0.3 0.4 0.5]

Potęgowanie i pierwiastek kwadratowy

Operatora ** należy używać do podnoszenia każdego elementu do potęgi. Do obliczania pierwiastków kwadratowych służy funkcja ufunc np.sqrt — jest zaimplementowana w C i działa szybciej niż pętla w Pythonie.

import numpy as np

a = np.array([1.0, 4.0, 9.0, 16.0])
print(a ** 0.5)       # [1. 2. 3. 4.]
print(np.sqrt(a))     # [1. 2. 3. 4.]
print(a ** 2)         # [  1.  16.  81. 256.]

Operatory porównania zwracają tablice wartości logicznych

Porównanie tablicy za pomocą >, == lub < zwraca tablicę wartości logicznych True/False — podstawę filtrowania danych.

import numpy as np

a = np.array([3, 7, 2, 9, 1])
print(a > 4)    # [False  True False  True False]
print(a == 2)   # [False False  True False False]
print(a >= 3)   # [ True  True False  True False]

Operatory logiczne na tablicach wartości logicznych

Do łączenia tablic wartości logicznych należy używać symboli &, | i ~ — a nie słów and/or/not. Każdy warunek należy umieścić w nawiasach, aby uniknąć nieoczekiwanych efektów kolejności operatorów.

import numpy as np

a = np.array([3, 7, 2, 9, 1])
mask = (a > 2) & (a < 8)
print(mask)   # [ True  True False False False]
print(a[mask])  # [3 7]

Operacje w miejscu za pomocą +=

Operatory takie jak += zmieniają tablicę w miejscu, oszczędzając pamięć dzięki pominięciu tworzenia nowej kopii. Należy tylko zachować zgodność dtype — w ten sposób nie można dodać 0.5 do tablicy liczb całkowitych.

import numpy as np

a = np.array([1.0, 2.0, 3.0])
a += 10.0
print(a)   # [11. 12. 13.]
a *= 2.0
print(a)   # [22. 24. 26.]

Działania na tablicach 2D

Działania element po elemencie działają tak samo na tablicach 2D: po dodaniu dwóch macierzy o zgodnych kształtach każda komórka jest sumowana z odpowiadającą jej komórką. Nie są potrzebne zagnieżdżone pętle.

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

print(A + B)
# [[ 6  8]
#  [10 12]]

print(A * B)  # element-wise, NOT matrix multiply
# [[ 5 12]
#  [21 32]]

Promocja dtype w działaniach mieszanych

Gdy połączymy dwa typy dtype, NumPy promuje oba do bezpieczniejszego typu, aby nie utracić informacji — int plus float daje float. Należy uważać, ponieważ może to po cichu zwiększyć zużycie pamięci.

import numpy as np

a = np.array([1, 2, 3], dtype=np.int32)
b = np.array([0.5, 1.5, 2.5], dtype=np.float64)

c = a + b
print(c)        # [1.5 3.5 5.5]
print(c.dtype)  # float64

Wartość bezwzględna i znak

Do obliczania wartości bezwzględnych służy np.abs, a np.sign zwraca dla każdego elementu -1, 0 lub +1. Obie funkcje są szybkimi funkcjami ufunc, często używanymi w funkcjach straty i etapach normalizacji.

import numpy as np

a = np.array([-3, 0, 4, -7, 2])
print(np.abs(a))    # [3 0 4 7 2]
print(np.sign(a))   # [-1  0  1 -1  1]

Szybki test

Sprawdź swoją wiedzę na temat działań arytmetycznych wykonywanych element po elemencie w NumPy z tego rozdziału.

Podsumowanie rozdziału

Doskonale! NumPy wykonuje działania element po elemencie, bez pętli, skalar jest rozgłaszany na całą tablicę, a porównania zwracają tablice wartości logicznych. Następny temat: wycinanie i indeksowanie.

Często zadawane pytania

Czy lekcja „Działania arytmetyczne element po elemencie” jest bezpłatna?

Tak — pełny tekst „Działania arytmetyczne element po elemencie” 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 Pandas & NumPy Academy, przejdź na CoddyKit PRO. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Działania arytmetyczne element po elemencie”?

Dodawać, odejmować, mnożyć i dzielić tablice element po elemencie oraz rozumieć, jak NumPy eliminuje potrzebę stosowania jawnych pętli w Pythonie Ćwiczysz Pandas & NumPy 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ąć Pandas & NumPy Academy?

Nie wymagamy żadnego doświadczenia. Pandas & NumPy 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 3 z 4.

Ile czasu zajmuje lekcja „Działania arytmetyczne element po elemencie”?

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 Pandas & NumPy Academy?

Tak. Każda lekcja Pandas & NumPy 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. Tworzenie tablic NumPy
  2. Atrybuty tablic i ich inspekcja
  3. Działania arytmetyczne element po elemencie
  4. Wycinanie i indeksowanie tablic
← Powrót do Pandas & NumPy Academy