Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Lähetys | Laskenta Numpyn Avulla
Ultimate NumPy

bookLähetys

Ennen kuin siirrytään NumPyn matemaattisiin operaatioihin, on tärkeää ymmärtää keskeinen käsite – broadcasting.

Note
Määritelmä

Broadcasting tarkoittaa tapaa sovittaa taulukoiden muodot yhteen aritmeettisia operaatioita varten ilman, että niitä tarvitsee muotoilla uudelleen manuaalisesti. Käytännössä broadcasting säätää automaattisesti taulukoiden muodot yhteensopiviksi.

Kun NumPy käsittelee kahta taulukkoa, se tarkistaa niiden muodot yhteensopivuuden varalta määrittääkseen, voidaanko ne broadcastata yhteen.

Note
Huomio

Jos kahdella taulukolla on jo sama muoto, lähetys (broadcasting) ei ole tarpeen.

Sama määrä ulottuvuuksia

Oletetaan, että meillä on kaksi taulukkoa, joille haluamme suorittaa yhteenlaskun, ja niiden muodot ovat: (2, 3) ja (1, 3). NumPy vertaa taulukoiden muotoja oikeanpuoleisimmasta ulottuvuudesta vasemmalle päin. Ensin verrataan 3 ja 3, sitten 2 ja 1.

Kaksi ulottuvuutta ovat yhteensopivia, jos ne ovat yhtä suuret tai jos toinen niistä on 1:

  • Ulottuvuudet 3 ja 3 ovat yhteensopivia, koska ne ovat yhtä suuret;
  • Ulottuvuudet 2 ja 1 ovat yhteensopivia, koska toinen niistä on 1.

Koska kaikki ulottuvuudet ovat yhteensopivia, muodot katsotaan yhteensopiviksi. Näin ollen taulukot voidaan lähettää (broadcast), mikä johtaa tavanomaiseen yhteenlaskuun matriisien välillä, joka suoritetaan alkiokohtaisesti.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 2D array with 1 row array_2 = np.array([[11, 12, 13]]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy
Note
Huom

array_2 luodaan 2D-taulukkona, jossa on vain yksi rivi, minkä vuoksi sen muoto on (1, 3).

Mutta mitä tapahtuisi, jos loisimme sen 1D-taulukkona, jonka muoto on (3,)?

Eri määrä ulottuvuuksia

Kun toisella taulukolla on vähemmän ulottuvuuksia kuin toisella, puuttuvat ulottuvuudet käsitellään ikään kuin niiden koko olisi 1. Esimerkiksi, tarkastellaan kahta taulukkoa, joiden muodot ovat (2, 3) ja (3,). Tässä 3 = 3, ja puuttuva vasemmanpuoleinen ulottuvuus katsotaan olevan 1, joten muoto (3,) muuttuu muotoon (1, 3). Koska muodot (2, 3) ja (1, 3) ovat yhteensopivia, nämä kaksi taulukkoa voidaan broadcastata.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 1D array array_2 = np.array([11, 12, 13]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy

Skaalareiden lähetys (Broadcasting)

Taulukkojen matemaattisten operaatioiden lisäksi voimme suorittaa vastaavia operaatioita taulukon ja skaalarin (luvut) välillä lähetyksen ansiosta. Tässä tapauksessa taulukolla voi olla mikä tahansa muoto, koska skaalari ei varsinaisesti omaa muotoa, ja kaikkien sen ulottuvuuksien katsotaan olevan 1. Näin ollen muodot ovat aina yhteensopivia.

123456
import numpy as np array = np.array([[1, 2, 3], [4, 5, 6]]) print(array.shape) # Broadcasting and element-wise addition result = array + 10 print(result)
copy

Yhteensopimattomat muodot

Tarkastellaan myös esimerkkiä yhteensopimattomista muodoista, joissa aritmeettista operaatiota ei voida suorittaa, koska lähetys (broadcasting) ei ole mahdollista:

Meillä on 2x3-taulukko ja yksisuuntainen taulukko, jonka pituus on 2, eli muoto (2,). Puuttuva ulottuvuus oletetaan olevan 1, joten muodot ovat (2, 3) ja (1, 2).

Vasemmalta oikealle tarkasteltaessa: 3 != 2, joten ulottuvuudet ovat välittömästi yhteensopimattomat, ja näin ollen muodot ovat yhteensopimattomat. Jos yritämme suorittaa koodin, saamme virheen:

12345678
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) array_2 = np.array([11, 12]) print(array_2.shape) # ValueError result = array_1 + array_2 print(result)
copy
question mark

Valitse kaikki taulukot, joilla on yhteensopivat muodot:

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

Can you explain more about how broadcasting works with higher-dimensional arrays?

What kind of error message do you get when shapes are incompatible?

Can you give more real-world examples where broadcasting is useful?

Awesome!

Completion rate improved to 3.7

bookLähetys

Pyyhkäise näyttääksesi valikon

Ennen kuin siirrytään NumPyn matemaattisiin operaatioihin, on tärkeää ymmärtää keskeinen käsite – broadcasting.

Note
Määritelmä

Broadcasting tarkoittaa tapaa sovittaa taulukoiden muodot yhteen aritmeettisia operaatioita varten ilman, että niitä tarvitsee muotoilla uudelleen manuaalisesti. Käytännössä broadcasting säätää automaattisesti taulukoiden muodot yhteensopiviksi.

Kun NumPy käsittelee kahta taulukkoa, se tarkistaa niiden muodot yhteensopivuuden varalta määrittääkseen, voidaanko ne broadcastata yhteen.

Note
Huomio

Jos kahdella taulukolla on jo sama muoto, lähetys (broadcasting) ei ole tarpeen.

Sama määrä ulottuvuuksia

Oletetaan, että meillä on kaksi taulukkoa, joille haluamme suorittaa yhteenlaskun, ja niiden muodot ovat: (2, 3) ja (1, 3). NumPy vertaa taulukoiden muotoja oikeanpuoleisimmasta ulottuvuudesta vasemmalle päin. Ensin verrataan 3 ja 3, sitten 2 ja 1.

Kaksi ulottuvuutta ovat yhteensopivia, jos ne ovat yhtä suuret tai jos toinen niistä on 1:

  • Ulottuvuudet 3 ja 3 ovat yhteensopivia, koska ne ovat yhtä suuret;
  • Ulottuvuudet 2 ja 1 ovat yhteensopivia, koska toinen niistä on 1.

Koska kaikki ulottuvuudet ovat yhteensopivia, muodot katsotaan yhteensopiviksi. Näin ollen taulukot voidaan lähettää (broadcast), mikä johtaa tavanomaiseen yhteenlaskuun matriisien välillä, joka suoritetaan alkiokohtaisesti.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 2D array with 1 row array_2 = np.array([[11, 12, 13]]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy
Note
Huom

array_2 luodaan 2D-taulukkona, jossa on vain yksi rivi, minkä vuoksi sen muoto on (1, 3).

Mutta mitä tapahtuisi, jos loisimme sen 1D-taulukkona, jonka muoto on (3,)?

Eri määrä ulottuvuuksia

Kun toisella taulukolla on vähemmän ulottuvuuksia kuin toisella, puuttuvat ulottuvuudet käsitellään ikään kuin niiden koko olisi 1. Esimerkiksi, tarkastellaan kahta taulukkoa, joiden muodot ovat (2, 3) ja (3,). Tässä 3 = 3, ja puuttuva vasemmanpuoleinen ulottuvuus katsotaan olevan 1, joten muoto (3,) muuttuu muotoon (1, 3). Koska muodot (2, 3) ja (1, 3) ovat yhteensopivia, nämä kaksi taulukkoa voidaan broadcastata.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 1D array array_2 = np.array([11, 12, 13]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy

Skaalareiden lähetys (Broadcasting)

Taulukkojen matemaattisten operaatioiden lisäksi voimme suorittaa vastaavia operaatioita taulukon ja skaalarin (luvut) välillä lähetyksen ansiosta. Tässä tapauksessa taulukolla voi olla mikä tahansa muoto, koska skaalari ei varsinaisesti omaa muotoa, ja kaikkien sen ulottuvuuksien katsotaan olevan 1. Näin ollen muodot ovat aina yhteensopivia.

123456
import numpy as np array = np.array([[1, 2, 3], [4, 5, 6]]) print(array.shape) # Broadcasting and element-wise addition result = array + 10 print(result)
copy

Yhteensopimattomat muodot

Tarkastellaan myös esimerkkiä yhteensopimattomista muodoista, joissa aritmeettista operaatiota ei voida suorittaa, koska lähetys (broadcasting) ei ole mahdollista:

Meillä on 2x3-taulukko ja yksisuuntainen taulukko, jonka pituus on 2, eli muoto (2,). Puuttuva ulottuvuus oletetaan olevan 1, joten muodot ovat (2, 3) ja (1, 2).

Vasemmalta oikealle tarkasteltaessa: 3 != 2, joten ulottuvuudet ovat välittömästi yhteensopimattomat, ja näin ollen muodot ovat yhteensopimattomat. Jos yritämme suorittaa koodin, saamme virheen:

12345678
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) array_2 = np.array([11, 12]) print(array_2.shape) # ValueError result = array_1 + array_2 print(result)
copy
question mark

Valitse kaikki taulukot, joilla on yhteensopivat muodot:

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 1
some-alt