Array-operationer og broadcasting
Udfør vektoriseret aritmetik, og forstå reglerne for broadcasting.
Array-operationer og broadcasting er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.
Vektoriseret aritmetik
NumPy anvender aritmetik elementvist på hele arrays uden Python-løkker — udført i optimeret C-kode.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b) # [5 7 9]
print(a * b) # [4 10 18]
print(a ** 2) # [1 4 9]Universelle funktioner (ufuncs)
NumPys ufuncs anvender C-funktioner på elementniveau: np.sqrt, np.exp, np.log, np.sin osv.
import numpy as np
x = np.linspace(0, np.pi, 5)
print(np.sin(x)) # [0. 0.707 1. 0.707 0.]
print(np.exp([1.0, 2.0, 3.0])) # [2.718 7.389 20.086]Reduktionsoperationer
Reducér et array til en skalar (eller et array med færre dimensioner) med np.sum, np.mean, np.max, np.min, np.std.
import numpy as np
m = np.array([[1, 2, 3], [4, 5, 6]])
print(np.sum(m)) # 21
print(np.sum(m, axis=0)) # [5 7 9] — sum each column
print(np.sum(m, axis=1)) # [6 15] — sum each rowBroadcastingregler
Broadcasting udvider mindre arrays, så de passer til større arrays — uden at kopiere data. Reglen er, at dimensionerne justeres fra højre, og dimensioner med størrelse 1 udvides.
import numpy as np
a = np.array([[1], [2], [3]]) # shape (3,1)
b = np.array([10, 20, 30]) # shape (3,)
print(a + b)
# [[11 21 31]
# [12 22 32]
# [13 23 33]]Broadcasting af skalaroperationer
En skalar broadcastes til alle elementer i arrayet.
import numpy as np
arr = np.arange(6).reshape(2, 3)
print(arr + 10)
# [[10 11 12]
# [13 14 15]]
print(arr * 0.5)
# [[0. 0.5 1. ]
# [1.5 2. 2.5]]Sammenligninger og boolske operationer
Sammenligninger producerer boolske arrays. Kombinér dem med &, |, ~ (ikke Python-operatorerne and/or/not).
import numpy as np
arr = np.array([1, 5, 3, 8, 2])
print(arr > 3) # [False True False True False]
print(arr[(arr > 2) & (arr < 7)]) # [5 3]where()
np.where(condition, x, y) returnerer elementer fra x, hvor værdien er True, og fra y, hvor værdien er False.
import numpy as np
arr = np.array([-2, 3, -1, 4, 0])
result = np.where(arr >= 0, arr, 0) # clip negatives to 0
print(result) # [0 3 0 4 0]Aggregering langs akser
Angiv axis= for at reducere langs en bestemt dimension i et multidimensionelt array.
import numpy as np
data = np.arange(12).reshape(3, 4)
print(data.mean(axis=0)) # mean of each column → shape (4,)
print(data.mean(axis=1)) # mean of each row → shape (3,)cumsum og diff
np.cumsum beregner kumulative summer; np.diff beregner forskellene mellem efterfølgende elementer.
import numpy as np
prices = np.array([100, 110, 105, 115])
print(np.cumsum(prices)) # [100 210 315 430]
print(np.diff(prices)) # [10 -5 10] (daily changes)Vektoriserede strengoperationer
np.char leverer vektoriserede strengoperationer på arrays med strenge.
import numpy as np
words = np.array(["apple", "banana", "cherry"])
print(np.char.upper(words)) # ['APPLE' 'BANANA' 'CHERRY']
print(np.char.startswith(words, "a")) # [True False False]Ydeevne sammenlignet med Python-lister
NumPy er 10-100 gange hurtigere end tilsvarende Python-løkker til numerisk arbejde, fordi beregningerne udføres i C uden Python-fortolkerens belastning.
import numpy as np, time
n = 1_000_000
start = time.perf_counter()
python_sum = sum(i**2 for i in range(n))
print(f"Python: {time.perf_counter()-start:.3f}s")
arr = np.arange(n)
start = time.perf_counter()
numpy_sum = (arr**2).sum()
print(f"NumPy: {time.perf_counter()-start:.3f}s")Hurtigt tjek
Hvilken shape får resultatet, når et array med shape (3,1) lægges sammen med et array med shape (3,)?
Opsamling
NumPy-operationer udføres elementvist i C (uden Python-løkker). Broadcasting udvider kompatible shapes uden at kopiere data. Brug axis= til reduktioner langs bestemte dimensioner. Ufuncs (np.sin, np.exp osv.) anvender operationer elementvist med C-hastighed.
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
- 76
- Lektioner
- 320
Ofte stillede spørgsmål
Er lektionen “Array-operationer og broadcasting” gratis?
Ja — hele teksten til “Array-operationer og broadcasting” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Array-operationer og broadcasting”?
Udfør vektoriseret aritmetik, og forstå reglerne for broadcasting. Du øver dig i Python Academy 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å Python Academy?
Der kræves ingen tidligere erfaring. Python Academy 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 2 af 4.
Hvor lang tid tager lektionen “Array-operationer og broadcasting”?
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 Python Academy-lektion?
Ja. Alle Python Academy-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
- NumPy-arrays og dtypes
- Array-operationer og broadcasting
- Indeksering, udskæring og avanceret indeksering
- Lineær algebra med NumPy