Lær AI med Python · Lektion

Broadcasting og vektoriserede operationer

Sådan fungerer broadcasting, elementvise operationer og undgåelse af loops med vektorisering.

Lektion 3 af 413 trin

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 0

Universelle 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 faster

Kombinering 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)
Gratis at komme i gang

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

  1. Oprettelse af arrays og deres egenskaber
  2. Indeksering, slicing og fancy indexing
  3. Broadcasting og vektoriserede operationer
  4. Lineær algebra med NumPy
← Tilbage til Lær AI med Python