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 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.
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.
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 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.
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 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.
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
Eksempel på uforenlige former, der en aritmetisk operasjon ikke kan utføres fordi broadcasting ikke er mulig:
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: 3=2, så du har umiddelbart uforenlige dimensjoner, og dermed uforenlige former. Hvis du prøver å kjøre koden, vil du få 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