Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Broadcasting | Matematik med NumPy
Numpy-Grunder

Broadcasting

Svep för att visa menyn

Innan du fördjupar dig i matematiska operationer i NumPy är det viktigt att förstå ett nyckelbegrepp – broadcasting.

Note
Definition

Broadcasting är ett sätt att anpassa formerna på arrayer för att utföra aritmetiska operationer utan att manuellt ändra deras form. I grunden justerar broadcasting automatiskt formerna på arrayer.

När NumPy arbetar med två arrayer kontrollerar den deras former för kompatibilitet för att avgöra om de kan broadcastas tillsammans.

Note
Notering

Om två arrayer redan har samma form, behövs ingen broadcasting.

Samma antal dimensioner

Anta att du har två arrayer som du vill utföra addition på, med följande former: (2, 3) och (1, 3). NumPy jämför formerna på de två arrayerna från den högra dimensionen och rör sig åt vänster. Det vill säga, den jämför först 3 och 3, sedan 2 och 1.
Två dimensioner anses vara kompatibla om de är lika eller om en av dem är 1:

  • För dimensionerna 3 och 3 är de kompatibla eftersom de är lika;
  • För dimensionerna 2 och 1 är de kompatibla eftersom en av dem är 1.

Eftersom alla dimensioner är kompatibla anses formerna vara kompatibla. Därför kan arrayerna broadcastas, vilket resulterar i en standard additionsoperation mellan matriser med samma form, som utförs elementvis.

Grundläggande 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
Notera

array_2 skapas som en 2D-array som endast innehåller en rad, vilket gör att dess shape är (1, 3).

Men vad skulle hända om du skapade den som en 1D-array med shape (3,)?.

Olika antal dimensioner

När en array har färre dimensioner än den andra behandlas de saknade dimensionerna som att de har storleken 1. Tänk på två arrayer med formerna (2, 3) och (3,). Här är 3 = 3, och den saknade vänstra dimensionen betraktas som 1, så formen (3,) blir (1, 3). Eftersom formerna (2, 3) och (1, 3) är kompatibla kan dessa två arrayer broadcastas.

Broadcasting av en 1D till en 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 av skalärer

Förutom matematiska operationer med arrayer kan du även utföra liknande operationer mellan en array och en skalär (tal) tack vare broadcasting. I detta fall kan arrayen ha vilken form som helst, eftersom en skalär i princip saknar form och alla dess dimensioner anses vara 1. Därför är formerna alltid kompatibla.

Broadcasting av en skalär till en 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)

Inkompatibla former

Exempel på inkompatibla former, där en aritmetisk operation inte kan utföras eftersom broadcasting inte är möjlig:

Inkompatibla former

Du har en 2x3-array och en endimensionell array med längd 2, det vill säga en form av (2,). Den saknade dimensionen betraktas som 1, så formerna blir (2, 3) och (1, 2).

Börjar man från den högra dimensionen: 323 \neq 2, vilket direkt ger inkompatibla dimensioner, och därmed inkompatibla former. Om du försöker köra koden får du ett felmeddelande:

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älj alla arrayer med kompatibla former:

Välj alla rätta svar

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 4. Kapitel 1
some-alt