Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Lähetys | Matematiikka NumPyn Kanssa
Numpy Perusteet

Lä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 käsin. Käytännössä broadcasting automaattisesti säätää taulukoiden muodot yhteensopiviksi.

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

Note
Huomio

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

Sama määrä ulottuvuuksia

Oletetaan, että sinulla on kaksi taulukkoa, joille haluat suorittaa yhteenlaskun, ja niiden muodot ovat: (2, 3) ja (1, 3). NumPy vertaa taulukoiden muotoja oikeanpuoleisimmasta ulottuvuudesta vasemmalle. Ensin verrataan siis 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ää, mikä johtaa tavalliseen yhteenlaskuoperaatioon samanmuotoisten matriisien välillä, joka suoritetaan alkiokohtaisesti.

Peruslähetys
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)
Note
Huomautus

array_2 on luotu 2D-taulukkona, joka sisältää vain yhden rivin, minkä vuoksi sen muoto on (1, 3).

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

Eri määrä ulottuvuuksia

Kun yhdellä taulukolla on vähemmän ulottuvuuksia kuin toisella, puuttuvat ulottuvuudet käsitellään kuin niiden koko olisi 1. 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 lähettää (broadcastata) yhteen.

Yksiulotteisen taulukon lähettäminen kaksiulotteiseen taulukkoon
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)

Skaalareiden lähetys (Broadcasting)

Matemaattisten operaatioiden lisäksi taulukoiden välillä voit suorittaa vastaavia operaatioita myös taulukon ja skaalarin (luvun) välillä lähetyksen ansiosta. Tässä tapauksessa taulukolla voi olla mikä tahansa muoto, sillä skaalarilla ei käytännössä ole muotoa, ja kaikkien sen ulottuvuuksien katsotaan olevan 1. Siksi muodot ovat aina yhteensopivia.

Skaalarin lähetys 2D-taulukkoon
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)

Yhteensopimattomat muodot

Esimerkki yhteensopimattomista muodoista, joissa aritmeettista operaatiota ei voida suorittaa, koska lähetys (broadcasting) ei ole mahdollista:

Yhteensopimattomat muodot

Käytössä 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).

Aloitetaan oikeanpuoleisimmasta ulottuvuudesta: 323 \neq 2, joten ulottuvuudet ovat heti yhteensopimattomat, ja näin ollen muodot ovat yhteensopimattomat. Jos yrität suorittaa koodin, saat 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)
question mark

Valitse kaikki taulukot, joiden muodot ovat yhteensopivia:

Valitse kaikki oikeat vastaukset

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

Osio 4. Luku 1
some-alt