Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Kringkasting | Matematikk med NumPy
Numpy-Grunnleggende

Kringkasting

Sveip for å vise menyen

Før du går videre til matematiske operasjoner i NumPy, er det viktig å forstå et sentralt konsept – broadcasting.

Note
Definisjon

Broadcasting er en metode for å tilpasse formene til arrayer slik at man kan utføre aritmetiske operasjoner uten å måtte endre dem manuelt. Broadcasting justerer automatisk formene til arrayer.

Når NumPy arbeider med to arrayer, sjekker den formene deres for kompatibilitet for å avgjøre om de kan broadcastes sammen.

Note
Merk

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

Samme antall dimensjoner

Anta at du har to matriser som du ønsker å utføre addisjon på, med følgende former: (2, 3) og (1, 3). NumPy sammenligner formene til de to matrisene fra høyre 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.

Grunnleggende 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
Merk

array_2 er opprettet som en 2D-array som kun inneholder én rad, derfor har den formen (1, 3).

Men hva ville skjedd hvis du opprettet den som en 1D-array med formen (3,)?

Ulikt antall dimensjoner

Når én matrise har færre dimensjoner enn den andre, behandles manglende dimensjoner som om de har størrelse 1. Se for deg to matriser 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 matrisene kringkastes.

Kringkasting av en 1D til en 2D matrise
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 skalarer

I tillegg til matematiske operasjoner med arrayer, kan du også utføre lignende operasjoner mellom en array og en skalar (tall) takket være broadcasting. I dette tilfellet kan arrayen ha hvilken 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.

Broadcasting av en skalar til 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)

Uforenlige former

Eksempel på uforenlige former, der en aritmetisk operasjon ikke kan utføres fordi broadcasting ikke er mulig:

Uforenlige former

Du 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).

Starter fra høyre dimensjon: 323 \neq 2, så du har umiddelbart uforenlige dimensjoner, og dermed uforenlige former. Hvis du prøver å kjøre koden, vil du få en feil:

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

Velg alle matriser med kompatible former:

Velg alle riktige svar

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 1

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 4. Kapittel 1
some-alt