Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Kringkasting | Matematikk med NumPy
Ultimate NumPy
course content

Kursinnhold

Ultimate NumPy

Ultimate NumPy

1. NumPy-Grunnleggende
2. Indeksering og Slicing
3. Vanlig Brukte NumPy-Funksjoner
4. Matematikk med NumPy

book
Kringkasting

Før vi dykker inn i matematiske operasjoner i NumPy, er det viktig å forstå et nøkkelkonsept — broadcasting.

Når NumPy arbeider med to matriser, sjekker den formene deres for kompatibilitet for å avgjøre om de kan broadcastes sammen.

Merk

Hvis to matriser allerede har samme form, er broadcasting ikke nødvendig.

Samme Antall Dimensjoner

Anta at vi har to matriser som vi ønsker å utføre addisjon på, med følgende former: (2, 3) og (1, 3). NumPy sammenligner formene til de to matrisene startende fra den høyre dimensjonen og beveger seg mot venstre. Det vil si, den sammenligner først 3 og 3, deretter 2 og 1.

To dimensjoner anses som kompatible hvis de er like eller hvis en av dem er 1:

  • For dimensjonene 3 og 3, er de kompatible fordi de er like;

  • For dimensjonene 2 og 1, er de kompatible fordi en av dem er 1.

Siden alle dimensjoner er kompatible, anses formene som kompatible. Derfor kan matrisene kringkastes, noe som resulterer i en standard addisjonsoperasjon mellom matriser av samme form, som utføres elementvis.

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

Merk

array_2 er opprettet som en 2D matrise som inneholder kun én rad, derfor er dens form (1, 3).

Men hva ville skjedd hvis vi opprettet den som en 1D matrise med formen (3,)?

Forskjellig Antall Dimensjoner

Når en matrise har færre dimensjoner enn den andre, behandles de manglende dimensjonene som å ha en størrelse på 1. For eksempel, vurder to matriser med formene (2, 3) og (3,). Her er 3 = 3, og den manglende venstre dimensjonen anses å være 1, så formen (3,) blir (1, 3). Siden formene (2, 3) og (1, 3) er kompatible, kan disse to matrisene kringkastes.

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

Broadcasting av skalarer

I tillegg til matematiske operasjoner med matriser, kan vi også utføre lignende operasjoner mellom en matrise og en skalar (tall) takket være broadcasting. I dette tilfellet kan matrisen ha enhver form, da en skalar i hovedsak ikke har noen form, og alle dens dimensjoner anses å være 1. Derfor er formene alltid kompatible.

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

Uforenlige former

La oss også vurdere et eksempel på uforenlige former, der en aritmetisk operasjon ikke kan utføres fordi broadcasting ikke er mulig:

Vi har en 2x3 matrise og en 1D matrise med lengde 2, dvs. en form på (2,). Den manglende dimensjonen anses å være 1, så formene blir (2, 3) og (1, 2).

Beveger oss fra venstre til høyre: 3 != 2, så vi har umiddelbart inkompatible dimensjoner, og derfor inkompatible former. Hvis vi prøver å kjøre koden, vil vi få en feil:

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

Velg alle matriser med kompatible former:

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 1

Spør AI

expand
ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

course content

Kursinnhold

Ultimate NumPy

Ultimate NumPy

1. NumPy-Grunnleggende
2. Indeksering og Slicing
3. Vanlig Brukte NumPy-Funksjoner
4. Matematikk med NumPy

book
Kringkasting

Før vi dykker inn i matematiske operasjoner i NumPy, er det viktig å forstå et nøkkelkonsept — broadcasting.

Når NumPy arbeider med to matriser, sjekker den formene deres for kompatibilitet for å avgjøre om de kan broadcastes sammen.

Merk

Hvis to matriser allerede har samme form, er broadcasting ikke nødvendig.

Samme Antall Dimensjoner

Anta at vi har to matriser som vi ønsker å utføre addisjon på, med følgende former: (2, 3) og (1, 3). NumPy sammenligner formene til de to matrisene startende fra den høyre dimensjonen og beveger seg mot venstre. Det vil si, den sammenligner først 3 og 3, deretter 2 og 1.

To dimensjoner anses som kompatible hvis de er like eller hvis en av dem er 1:

  • For dimensjonene 3 og 3, er de kompatible fordi de er like;

  • For dimensjonene 2 og 1, er de kompatible fordi en av dem er 1.

Siden alle dimensjoner er kompatible, anses formene som kompatible. Derfor kan matrisene kringkastes, noe som resulterer i en standard addisjonsoperasjon mellom matriser av samme form, som utføres elementvis.

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

Merk

array_2 er opprettet som en 2D matrise som inneholder kun én rad, derfor er dens form (1, 3).

Men hva ville skjedd hvis vi opprettet den som en 1D matrise med formen (3,)?

Forskjellig Antall Dimensjoner

Når en matrise har færre dimensjoner enn den andre, behandles de manglende dimensjonene som å ha en størrelse på 1. For eksempel, vurder to matriser med formene (2, 3) og (3,). Her er 3 = 3, og den manglende venstre dimensjonen anses å være 1, så formen (3,) blir (1, 3). Siden formene (2, 3) og (1, 3) er kompatible, kan disse to matrisene kringkastes.

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

Broadcasting av skalarer

I tillegg til matematiske operasjoner med matriser, kan vi også utføre lignende operasjoner mellom en matrise og en skalar (tall) takket være broadcasting. I dette tilfellet kan matrisen ha enhver form, da en skalar i hovedsak ikke har noen form, og alle dens dimensjoner anses å være 1. Derfor er formene alltid kompatible.

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

Uforenlige former

La oss også vurdere et eksempel på uforenlige former, der en aritmetisk operasjon ikke kan utføres fordi broadcasting ikke er mulig:

Vi har en 2x3 matrise og en 1D matrise med lengde 2, dvs. en form på (2,). Den manglende dimensjonen anses å være 1, så formene blir (2, 3) og (1, 2).

Beveger oss fra venstre til høyre: 3 != 2, så vi har umiddelbart inkompatible dimensjoner, og derfor inkompatible former. Hvis vi prøver å kjøre koden, vil vi få en feil:

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

Velg alle matriser med kompatible former:

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 1
Vi beklager at noe gikk galt. Hva skjedde?
some-alt