Kringkasting
Før du går videre til matematiske operasjoner i NumPy, er det viktig å forstå et sentralt konsept – broadcasting.
Broadcasting er en metode for å tilpasse formene til matriser slik at aritmetiske operasjoner kan utføres uten at du manuelt må endre formene. I hovedsak justerer broadcasting automatisk formene til matriser.
Når NumPy arbeider med to matriser, sjekker den formene deres for kompatibilitet for å avgjøre om de kan broadcastes sammen.
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 fra høyre dimensjon og mot venstre. Det vil si at den først sammenligner 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 dimensjonene er kompatible, anses formene som kompatible. Derfor kan matrisene broadcastes, noe som resulterer i en standard addisjonsoperasjon mellom matriser med samme form, som utføres elementvis.
123456789import 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)
array_2 er opprettet som et 2D-array som kun inneholder én rad, derfor er formen (1, 3).
Men hva ville skjedd hvis vi opprettet det som et 1D-array med formen (3,)?
Ulikt antall dimensjoner
Når ett array har færre dimensjoner enn det andre, behandles de manglende dimensjonene som å ha størrelse 1. For eksempel, vurder to arrays med formene (2, 3) og (3,). Her er 3 = 3, og den manglende venstre dimensjonen regnes som 1, slik at formen (3,) blir til (1, 3). Siden formene (2, 3) og (1, 3) er kompatible, kan disse to arrayene broadcastes.
123456789import 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 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 vilken som helst form, siden en skalar i praksis ikke har noen form, og alle dens dimensjoner anses å være 1. Derfor er formene alltid kompatible.
123456import 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)
Uforenlige former
La oss også se på et eksempel med uforenlige former, der en aritmetisk operasjon ikke kan utføres fordi broadcasting ikke er mulig:
Vi har et 2x3-array og et 1D-array med lengde 2, altså en form på (2,). Den manglende dimensjonen regnes som 1, så formene blir (2, 3) og (1, 2).
Fra venstre mot høyre: 3 != 2, så vi har umiddelbart uforenlige dimensjoner, og dermed uforenlige former. Hvis vi prøver å kjøre koden, får vi en feil:
12345678import 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)
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Can you explain more about how broadcasting works with higher-dimensional arrays?
What kind of error message do you get when shapes are incompatible?
Can you give more real-world examples where broadcasting is useful?
Awesome!
Completion rate improved to 3.7
Kringkasting
Sveip for å vise menyen
Før du går videre til matematiske operasjoner i NumPy, er det viktig å forstå et sentralt konsept – broadcasting.
Broadcasting er en metode for å tilpasse formene til matriser slik at aritmetiske operasjoner kan utføres uten at du manuelt må endre formene. I hovedsak justerer broadcasting automatisk formene til matriser.
Når NumPy arbeider med to matriser, sjekker den formene deres for kompatibilitet for å avgjøre om de kan broadcastes sammen.
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 fra høyre dimensjon og mot venstre. Det vil si at den først sammenligner 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 dimensjonene er kompatible, anses formene som kompatible. Derfor kan matrisene broadcastes, noe som resulterer i en standard addisjonsoperasjon mellom matriser med samme form, som utføres elementvis.
123456789import 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)
array_2 er opprettet som et 2D-array som kun inneholder én rad, derfor er formen (1, 3).
Men hva ville skjedd hvis vi opprettet det som et 1D-array med formen (3,)?
Ulikt antall dimensjoner
Når ett array har færre dimensjoner enn det andre, behandles de manglende dimensjonene som å ha størrelse 1. For eksempel, vurder to arrays med formene (2, 3) og (3,). Her er 3 = 3, og den manglende venstre dimensjonen regnes som 1, slik at formen (3,) blir til (1, 3). Siden formene (2, 3) og (1, 3) er kompatible, kan disse to arrayene broadcastes.
123456789import 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 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 vilken som helst form, siden en skalar i praksis ikke har noen form, og alle dens dimensjoner anses å være 1. Derfor er formene alltid kompatible.
123456import 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)
Uforenlige former
La oss også se på et eksempel med uforenlige former, der en aritmetisk operasjon ikke kan utføres fordi broadcasting ikke er mulig:
Vi har et 2x3-array og et 1D-array med lengde 2, altså en form på (2,). Den manglende dimensjonen regnes som 1, så formene blir (2, 3) og (1, 2).
Fra venstre mot høyre: 3 != 2, så vi har umiddelbart uforenlige dimensjoner, og dermed uforenlige former. Hvis vi prøver å kjøre koden, får vi en feil:
12345678import 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)
Takk for tilbakemeldingene dine!