Arrayoperationer och broadcasting
Utför vektoriserad aritmetik och förstå reglerna för broadcasting.
Arrayoperationer och broadcasting är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.
Vektoriserad aritmetik
NumPy tillämpar aritmetik elementvis över hela arrayer utan Python-loopar – operationerna körs i optimerad C-kod.
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]Universella funktioner (ufuncs)
NumPys ufuncs tillämpar funktioner på C-nivå elementvis: np.sqrt, np.exp, np.log, np.sin och så vidare.
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
Reducera en array till ett skalärvärde (eller en array med färre dimensioner) med np.sum, np.mean, np.max, np.min eller 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 rowRegler för broadcasting
Broadcasting utvidgar mindre arrayer så att de matchar större arrayer – utan att kopiera data. Regel: dimensionerna riktas in från höger; dimensioner med storlek 1 utvidgas.
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 av skaläroperationer
Ett skalärvärde broadcastas över alla element i arrayen.
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]]Jämförelser och booleska operationer
Jämförelser producerar booleska arrayer. Kombinera dem med &, | och ~ (inte Python 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) returnerar element från x där värdet är True och från y där värdet är 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 längs axlar
Ange axis= för att reducera längs en viss dimension i en flerdimensionell 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 och diff
np.cumsum beräknar kumulativa summor och np.diff beräknar skillnader mellan på varandra följande element.
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)Vektoriserade strängoperationer
np.char tillhandahåller vektoriserade strängoperationer på arrayer med strängar.
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]Prestanda jämfört med Python-listor
NumPy är 10–100 gånger snabbare än motsvarande Python-loopar för numeriskt arbete, eftersom beräkningarna körs i C utan overhead från Python-tolkaren.
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")Snabbkontroll
Vilken shape får resultatet när en array med shape (3,1) adderas till en array med shape (3,)?
Sammanfattning
NumPy-operationer körs elementvis i C (utan Python-loopar). Broadcasting utvidgar kompatibla shapes utan att kopiera data. Använd axis= för reduktioner längs specifika dimensioner. Ufuncs (np.sin, np.exp och så vidare) tillämpar operationer elementvis med C-hastighet.
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 76
- Lektioner
- 320
Vanliga frågor
Är lektionen ”Arrayoperationer och broadcasting” gratis?
Ja – hela texten till ”Arrayoperationer och broadcasting” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Arrayoperationer och broadcasting”?
Utför vektoriserad aritmetik och förstå reglerna för broadcasting. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Python Academy?
Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Arrayoperationer och broadcasting”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Python Academy-lektionen?
Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- NumPy-arrayer och dtypes
- Arrayoperationer och broadcasting
- Indexering, segmentering och avancerad indexering
- Linjär algebra med NumPy