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

Kursusindhold

Ultimativ NumPy

Ultimativ NumPy

1. NumPy Grundlæggende
2. Indeksering og Skæring
3. Almindeligt Anvendte NumPy-Funktioner
4. Matematik med NumPy

book
Udsendelse

Før vi dykker ned i matematiske operationer i NumPy, er det vigtigt at forstå et nøglekoncept — broadcasting.

Når NumPy arbejder med to arrays, tjekker det deres former for kompatibilitet for at afgøre, om de kan broadcastes sammen.

Bemærk

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

Samme Antal Dimensioner

Antag, at vi har to arrays, som vi ønsker at udføre addition på, med følgende former: (2, 3) og (1, 3). NumPy sammenligner formerne af de to arrays startende fra den højre dimension og bevæger sig til venstre. Det vil sige, det sammenligner først 3 og 3, derefter 2 og 1.

To dimensioner betragtes som kompatible, hvis de er lige eller hvis en af dem er 1:

  • For dimensionerne 3 og 3 er de kompatible, fordi de er lige;

  • For dimensionerne 2 og 1 er de kompatible, fordi en af dem er 1.

Da alle dimensioner er kompatible, betragtes formerne som kompatible. Derfor kan arraysene broadcastes, hvilket resulterer i en standard additionsoperation mellem matricer af samme form, som udfø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

Bemærk

array_2 er oprettet som en 2D array, der kun indeholder én række, hvilket er grunden til, at dens form er (1, 3).

Men hvad ville der ske, hvis vi oprettede den som en 1D array med en form på (3,)?

Forskelligt Antal Dimensioner

Når en array har færre dimensioner end den anden, behandles de manglende dimensioner som om de har en størrelse på 1. For eksempel, overvej to arrays med formerne (2, 3) og (3,). Her er 3 = 3, og den manglende venstre dimension betragtes som 1, så formen (3,) bliver (1, 3). Da formerne (2, 3) og (1, 3) er kompatible, kan disse to arrays broadcastes.

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 af skalærer

Udover matematiske operationer med arrays, kan vi også udføre lignende operationer mellem et array og en skalær (tal) takket være broadcasting. I dette tilfælde kan arrayet have enhver form, da en skalær i det væsentlige ikke har nogen form, og alle dens dimensioner betragtes som 1. Derfor er formene altid 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

Inkompatible Former

Lad os også overveje et eksempel på inkompatible former, hvor en aritmetisk operation ikke kan udføres, fordi broadcasting ikke er mulig:

Vi har en 2x3 matrix og en 1D matrix med længden 2, dvs. en form på (2,). Den manglende dimension betragtes som 1, så formene bliver (2, 3) og (1, 2).

Bevæger sig fra venstre mod højre: 3 != 2, så vi har straks uforenelige dimensioner, og derfor uforenelige former. Hvis vi forsøger at køre koden, vil vi få en fejl:

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

Vælg alle arrays med kompatible former:

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 1

Spørg AI

expand
ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

course content

Kursusindhold

Ultimativ NumPy

Ultimativ NumPy

1. NumPy Grundlæggende
2. Indeksering og Skæring
3. Almindeligt Anvendte NumPy-Funktioner
4. Matematik med NumPy

book
Udsendelse

Før vi dykker ned i matematiske operationer i NumPy, er det vigtigt at forstå et nøglekoncept — broadcasting.

Når NumPy arbejder med to arrays, tjekker det deres former for kompatibilitet for at afgøre, om de kan broadcastes sammen.

Bemærk

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

Samme Antal Dimensioner

Antag, at vi har to arrays, som vi ønsker at udføre addition på, med følgende former: (2, 3) og (1, 3). NumPy sammenligner formerne af de to arrays startende fra den højre dimension og bevæger sig til venstre. Det vil sige, det sammenligner først 3 og 3, derefter 2 og 1.

To dimensioner betragtes som kompatible, hvis de er lige eller hvis en af dem er 1:

  • For dimensionerne 3 og 3 er de kompatible, fordi de er lige;

  • For dimensionerne 2 og 1 er de kompatible, fordi en af dem er 1.

Da alle dimensioner er kompatible, betragtes formerne som kompatible. Derfor kan arraysene broadcastes, hvilket resulterer i en standard additionsoperation mellem matricer af samme form, som udfø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

Bemærk

array_2 er oprettet som en 2D array, der kun indeholder én række, hvilket er grunden til, at dens form er (1, 3).

Men hvad ville der ske, hvis vi oprettede den som en 1D array med en form på (3,)?

Forskelligt Antal Dimensioner

Når en array har færre dimensioner end den anden, behandles de manglende dimensioner som om de har en størrelse på 1. For eksempel, overvej to arrays med formerne (2, 3) og (3,). Her er 3 = 3, og den manglende venstre dimension betragtes som 1, så formen (3,) bliver (1, 3). Da formerne (2, 3) og (1, 3) er kompatible, kan disse to arrays broadcastes.

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 af skalærer

Udover matematiske operationer med arrays, kan vi også udføre lignende operationer mellem et array og en skalær (tal) takket være broadcasting. I dette tilfælde kan arrayet have enhver form, da en skalær i det væsentlige ikke har nogen form, og alle dens dimensioner betragtes som 1. Derfor er formene altid 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

Inkompatible Former

Lad os også overveje et eksempel på inkompatible former, hvor en aritmetisk operation ikke kan udføres, fordi broadcasting ikke er mulig:

Vi har en 2x3 matrix og en 1D matrix med længden 2, dvs. en form på (2,). Den manglende dimension betragtes som 1, så formene bliver (2, 3) og (1, 2).

Bevæger sig fra venstre mod højre: 3 != 2, så vi har straks uforenelige dimensioner, og derfor uforenelige former. Hvis vi forsøger at køre koden, vil vi få en fejl:

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

Vælg alle arrays med kompatible former:

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 1
Vi beklager, at noget gik galt. Hvad skete der?
some-alt