Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Broadcasting | Matematik med NumPy
Numpy-Grundlæggende

Broadcasting

Stryg for at vise menuen

Før du går i gang med matematiske operationer i NumPy, er det vigtigt at forstå et centralt begreb - broadcasting.

Note
Definition

Broadcasting er en metode til at tilpasse formaterne på arrays, så aritmetiske operationer kan udføres uden manuel omformning. Broadcasting justerer automatisk formaterne på arrays.

Når NumPy arbejder med to arrays, kontrollerer den deres formater for kompatibilitet for at afgøre, om de kan broadcastes sammen.

Note
Bemærk

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

Samme antal dimensioner

Antag, at du har to arrays, som du ønsker at udføre addition på, med følgende former: (2, 3) og (1, 3). NumPy sammenligner formene på de to arrays startende fra den højrest placerede dimension og bevæger sig mod venstre. Det vil sige, at den først sammenligner 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 formene som kompatible. Derfor kan arrays broadcastes, hvilket resulterer i en standard additionsoperation mellem matricer med samme form, som udføres elementvist.

Grundlæggende broadcasting
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
Bemærk

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

Men hvad ville der ske, hvis du oprettede det som et 1D array med formen (3,)?

Forskelligt antal dimensioner

Når et array har færre dimensioner end det andet, behandles de manglende dimensioner som om de har størrelsen 1. Overvej to arrays med formerne (2, 3) og (3,). Her gælder 3 = 3, og den manglende venstre dimension betragtes som 1, så formen (3,) bliver til (1, 3). Da formerne (2, 3) og (1, 3) er kompatible, kan disse to arrays broadcastes.

Broadcasting af et 1D-array til et 2D-array
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)

Broadcasting af skalarer

Ud over matematiske operationer med arrays kan du også udføre lignende operationer mellem et array og en skalar (tal) takket være broadcasting. I dette tilfælde kan arrayet have enhver form, da en skalar grundlæggende ikke har nogen form, og alle dens dimensioner anses for at være 1. Derfor er formaterne altid kompatible.

Broadcasting af en skalar til et 2D-array
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)

Uforenelige former

Eksempel på uforenelige former, hvor en aritmetisk operation ikke kan udføres, fordi broadcasting ikke er mulig:

Uforenelige former

Du har et 2x3 array og et 1D-array med længde 2, dvs. en form på (2,). Den manglende dimension betragtes som 1, så formene bliver (2, 3) og (1, 2).

Startende fra den højre dimension: 323 \neq 2, så der er straks uforenelige dimensioner, og dermed uforenelige former. Hvis du forsøger at køre koden, vil du 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)
question mark

Vælg alle arrays med kompatible former:

Vælg alle korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

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

Sektion 4. Kapitel 1
some-alt