Python Academy · Lektion

Arrayoperationer och broadcasting

Utför vektoriserad aritmetik och förstå reglerna för broadcasting.

Lektion 2 av 413 steg

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 row

Regler 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.

Gratis att börja

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

  1. NumPy-arrayer och dtypes
  2. Arrayoperationer och broadcasting
  3. Indexering, segmentering och avancerad indexering
  4. Linjär algebra med NumPy
← Tillbaka till Python Academy