Broadcasting og vektoriserede operationer
Sådan fungerer broadcasting, elementvise operationer og undgåelse af loops med vektorisering.
Broadcasting og vektoriserede operationer er en gratis Lær AI med Python-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Lær AI med Python, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Lær AI med Python-kurset indeholder 4 lektioner i alt.
Hvorfor vektorisere?
NumPy arbejder på hele arrays med C-hastighed. Når Python-løkker erstattes af array-udtryk, kaldes det vektorisering, og det er ofte 10 til 100 gange hurtigere.
Elementvise operationer
Aritmetiske operatorer anvendes element for element, når formerne passer sammen. Der kræves ingen løkke.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([10, 20, 30])
print(a + b) # [11 22 33]
print(a * b) # [10 40 90]Broadcasting af skalarer
En operation mellem et array og en skalar anvender skalaren på hvert element. Skalaren broadcastes hen over arrayet.
a = np.array([1, 2, 3, 4])
print(a * 10) # [10 20 30 40]
print(a + 100) # [101 102 103 104]Hvad er broadcasting?
Broadcasting gør det muligt for NumPy at kombinere arrays med forskellige former ved virtuelt at strække det mindste, uden at kopiere hukommelse.
Reglen for broadcasting
Sammenlign formerne fra den bageste (længst til højre) dimension. To dimensioner er kompatible, når de er ens, eller når en af dem er 1. En dimension med størrelse 1 strækkes, så den passer.
# (3, 4) with (4,) -> compatible (trailing 4 matches)
# (3, 4) with (3, 1) -> compatible (1 stretches to 4)
# (3, 4) with (3,) -> ERROR (trailing 4 vs 3)Broadcasting af rækkevektorer
Et 1D-array med en længde svarende til antallet af kolonner lægges til hver række.
m = np.array([[1, 2, 3], [4, 5, 6]])
row = np.array([10, 20, 30])
print(m + row)
# [[11 22 33]
# [14 25 36]]Broadcasting af søjlevektorer
Omdan en vektor til en søjle med formen (n,1), så den broadcastes på tværs af kolonner i stedet for rækker.
col = np.array([[100], [200]]) # shape (2, 1)
print(m + col)
# [[101 102 103]
# [204 205 206]]Centrering af data i praksis
Ved at trække gennemsnittet pr. kolonne fra centreres hver egenskab, hvilket er et almindeligt forbehandlingstrin, der udføres på én broadcastet linje.
data = np.array([[1.0, 10.0], [2.0, 20.0], [3.0, 30.0]])
centered = data - data.mean(axis=0)
print(centered)
# columns now have mean 0Universelle funktioner (ufuncs)
NumPy leverer hurtige matematiske funktioner, der anvendes elementvis, kaldet ufuncs: np.sqrt, np.log, np.exp og flere. De er vektoriserede og understøtter broadcasting.
a = np.array([1.0, 4.0, 9.0, 16.0])
print(np.sqrt(a)) # [1. 2. 3. 4.]
print(np.log(a)) # natural log of each element
print(np.exp([0, 1])) # [1. 2.71828183]Hastighed: løkke kontra vektoriseret kode
Den samme beregning er markant hurtigere i vektoriseret form. Brug %timeit for at mærke forskellen på en million elementer.
big = np.arange(1000000, dtype=float)
# Slow Python loop:
# %timeit [x*x for x in big]
# Fast vectorized:
%timeit big * big # typically tens of times fasterKombinering af vektorisering
Kæd ufuncs og aritmetik for at udtrykke formler direkte. Dette beregner en Gaussisk kurve uden løkker.
x = np.linspace(-3, 3, 7)
y = np.exp(-x**2 / 2)
print(np.round(y, 3))Hurtigt tjek
Afprøv din forståelse af broadcasting.
Opsummering
Det vigtigste om vektorisering:
- Elementvise operationer undgår Python-løkker og kører med C-hastighed
- Broadcasting justerer de bageste dimensioner; størrelserne skal matche eller være 1
- Brug søjlevektorer (n,1) til broadcasting ned gennem kolonner
- ufuncs:
np.sqrt,np.log,np.exp - Centrér data med
data - data.mean(axis=0)
Lær Python med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 53
- Lektioner
- 225
Ofte stillede spørgsmål
Er lektionen “Broadcasting og vektoriserede operationer” gratis?
Ja — alle 3 lektioner i læringssporet Lær AI med Python, inklusive “Broadcasting og vektoriserede operationer”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Lær AI med Python-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Broadcasting og vektoriserede operationer”?
Sådan fungerer broadcasting, elementvise operationer og undgåelse af loops med vektorisering. Du øver dig i Lær AI med Python med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Lær AI med Python?
Der kræves ingen tidligere erfaring. Lær AI med Python på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Broadcasting og vektoriserede operationer”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Lær AI med Python-lektion?
Ja. Alle Lær AI med Python-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Oprettelse af arrays og deres egenskaber
- Indeksering, slicing og fancy indexing
- Broadcasting og vektoriserede operationer
- Lineær algebra med NumPy