Python Academy · Oppitunti

Taulukko-operaatiot ja broadcasting

Suorittakaa vektorisoitua aritmetiikkaa ja ymmärtäkää broadcasting-säännöt.

Oppitunti 2/413 vaihetta

Taulukko-operaatiot ja broadcasting on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.

Vektorisoitu aritmetiikka

NumPy suorittaa aritmeettiset operaatiot alkioittain kokonaisille taulukoille ilman Python-silmukoita — optimoidussa C-koodissa.

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]

Universaalifunktiot (ufuncit)

NumPyn ufuncit käyttävät alkioittain suoritettavia C-tason funktioita: np.sqrt, np.exp, np.log, np.sin ja niin edelleen.

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]

Reduktio-operaatiot

Supistakaa taulukko skalaariksi (tai pienemmän dimension taulukoksi) käyttämällä funktioita np.sum, np.mean, np.max, np.min ja 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

Broadcasting-säännöt

Broadcasting laajentaa pienemmät taulukot vastaamaan suurempia taulukoita — kopioimatta dataa. Sääntö: dimensiot kohdistetaan oikealta alkaen ja koon 1 dimensiot laajennetaan.

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]]

Skalaarien broadcasting-operaatiot

Skalaari broadcastataan taulukon kaikkiin alkioihin.

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]]

Vertailu- ja Boolen-operaatiot

Vertailut tuottavat Boolen-taulukoita. Yhdistäkää ne operaattoreilla &, | ja ~ (ei Pythonin operaattoreilla and, or ja 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) palauttaa x:n alkiot kohdissa, joissa arvo on True, ja y:n alkiot kohdissa, joissa arvo on 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]

Aggregointi akseleita pitkin

Määrittäkää axis=, jotta voitte supistaa moniulotteisen taulukon tietyn dimension suunnassa.

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 ja diff

np.cumsum laskee kumulatiiviset summat; np.diff laskee peräkkäisten alkioiden erot.

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)

Vektoroidut merkkijono-operaatiot

np.char tarjoaa vektoroituja merkkijono-operaatioita merkkijonotaulukoille.

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]

Suorituskyky verrattuna Python-listoihin

NumPy on numeerisissa tehtävissä 10–100 kertaa nopeampi kuin vastaavat Python-silmukat, koska se suoritetaan C-koodissa ilman Python-tulkin aiheuttamaa yleiskustannusta.

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")

Pikatarkistus

Kun shape-(3,1)-taulukko lasketaan yhteen shape-(3,)-taulukon kanssa, mikä on tuloksen shape?

Kertaus

NumPy-operaatiot suoritetaan alkioittain C-koodissa (ilman Python-silmukoita). Broadcasting laajentaa yhteensopivia muotoja kopioimatta dataa. Käyttäkää axis=-parametria reduktioihin tiettyjen dimensioiden suunnassa. Ufuncit (np.sin, np.exp ja niin edelleen) suorittavat operaatiot alkioittain C:n nopeudella.

Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
76
Oppitunnit
320

Usein kysytyt kysymykset

Onko oppitunti ”Taulukko-operaatiot ja broadcasting” ilmainen?

Kyllä – oppitunnin ”Taulukko-operaatiot ja broadcasting” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Taulukko-operaatiot ja broadcasting”?

Suorittakaa vektorisoitua aritmetiikkaa ja ymmärtäkää broadcasting-säännöt. Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Taulukko-operaatiot ja broadcasting”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?

Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. NumPy-taulukot ja dtypet
  2. Taulukko-operaatiot ja broadcasting
  3. Indeksointi, viipalointi ja fancy-indeksointi
  4. Lineaarialgebra NumPylla
← Takaisin: Python Academy