Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Sändning | Matematik med NumPy
Ultimata NumPy
course content

Kursinnehåll

Ultimata NumPy

Ultimata NumPy

1. NumPy Grunder
2. Indexering och Skivning
3. Vanligt Använda NumPy-Funktioner
4. Matematik med NumPy

book
Sändning

Innan vi dyker in i matematiska operationer i NumPy är det viktigt att förstå ett nyckelbegrepp — broadcasting.

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

Notera

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

Samma antal dimensioner

Anta att vi har två arrayer som vi 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 till 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 addition mellan matriser av samma form, vilket utförs 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

Notera

array_2 skapas som en 2D array som endast innehåller en rad, vilket är anledningen till att dess form är (1, 3).

Men vad skulle hända om vi skapade den som en 1D array med formen (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. Till exempel, överväg två arrayer med formerna (2, 3) och (3,). Här är 3 = 3, och den saknade vänstra dimensionen anses vara 1, så formen (3,) blir (1, 3). Eftersom formerna (2, 3) och (1, 3) är kompatibla, kan dessa två arrayer sändas ut.

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

Sändning av Skalärer

Förutom matematiska operationer med arrayer, kan vi också utföra liknande operationer mellan en array och en skalär (nummer) tack vare sändning. I detta fall kan arrayen ha vilken form som helst, eftersom en skalär i princip inte har någon form, och alla dess dimensioner anses vara 1. Därför är formerna alltid kompatibla.

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

Oförenliga former

Låt oss också överväga ett exempel på oförenliga former, där en aritmetisk operation inte kan utföras eftersom broadcasting inte är möjlig:

Vi har en 2x3 array och en 1D-array med längden 2, dvs. en form av (2,). Den saknade dimensionen anses vara 1, så formerna blir (2, 3) och (1, 2).

Rör sig från vänster till höger: 3 != 2, så vi har omedelbart inkompatibla dimensioner, och därför inkompatibla former. Om vi försöker köra koden kommer vi att få ett fel:

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

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 1

Fråga AI

expand
ChatGPT

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

course content

Kursinnehåll

Ultimata NumPy

Ultimata NumPy

1. NumPy Grunder
2. Indexering och Skivning
3. Vanligt Använda NumPy-Funktioner
4. Matematik med NumPy

book
Sändning

Innan vi dyker in i matematiska operationer i NumPy är det viktigt att förstå ett nyckelbegrepp — broadcasting.

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

Notera

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

Samma antal dimensioner

Anta att vi har två arrayer som vi 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 till 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 addition mellan matriser av samma form, vilket utförs 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

Notera

array_2 skapas som en 2D array som endast innehåller en rad, vilket är anledningen till att dess form är (1, 3).

Men vad skulle hända om vi skapade den som en 1D array med formen (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. Till exempel, överväg två arrayer med formerna (2, 3) och (3,). Här är 3 = 3, och den saknade vänstra dimensionen anses vara 1, så formen (3,) blir (1, 3). Eftersom formerna (2, 3) och (1, 3) är kompatibla, kan dessa två arrayer sändas ut.

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

Sändning av Skalärer

Förutom matematiska operationer med arrayer, kan vi också utföra liknande operationer mellan en array och en skalär (nummer) tack vare sändning. I detta fall kan arrayen ha vilken form som helst, eftersom en skalär i princip inte har någon form, och alla dess dimensioner anses vara 1. Därför är formerna alltid kompatibla.

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

Oförenliga former

Låt oss också överväga ett exempel på oförenliga former, där en aritmetisk operation inte kan utföras eftersom broadcasting inte är möjlig:

Vi har en 2x3 array och en 1D-array med längden 2, dvs. en form av (2,). Den saknade dimensionen anses vara 1, så formerna blir (2, 3) och (1, 2).

Rör sig från vänster till höger: 3 != 2, så vi har omedelbart inkompatibla dimensioner, och därför inkompatibla former. Om vi försöker köra koden kommer vi att få ett fel:

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

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 1
Vi beklagar att något gick fel. Vad hände?
some-alt