Taulukko-operaatiot ja broadcasting
Suorittakaa vektorisoitua aritmetiikkaa ja ymmärtäkää broadcasting-säännöt.
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 rowBroadcasting-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.
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
- NumPy-taulukot ja dtypet
- Taulukko-operaatiot ja broadcasting
- Indeksointi, viipalointi ja fancy-indeksointi
- Lineaarialgebra NumPylla