Pandas & NumPy Academy · Lektion

Elementvis aritmetik

Læg arrays sammen, træk dem fra hinanden, multiplicér og dividér dem element for element, og forstå, hvordan NumPy undgår eksplicitte Python-løkker.

Lektion 3 af 413 trin

Elementvis aritmetik er en gratis Pandas & NumPy Academy-lektion på CoddyKit. Dette er lektion 3 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 Pandas & NumPy Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Pandas & NumPy Academy-kurset indeholder 4 lektioner i alt.

Problemet med Python-løkker

Det kræver en langsom løkke at lægge lister sammen i ren Python. NumPy gør det i stedet i hurtig C — ofte 10 til 100 gange hurtigere. Dette trick kaldes vektorisering. ⚡

# Python list approach -- slow
a = [1, 2, 3, 4]
b = [10, 20, 30, 40]
result = [x + y for x, y in zip(a, b)]
print(result)  # [11, 22, 33, 44]

# NumPy approach -- fast
import numpy as np
na, nb = np.array(a), np.array(b)
print(na + nb)  # [11 22 33 44]

Addition og subtraktion

Operatorerne + og - fungerer element for element på arrays med samme shape og parrer tilsvarende positioner i én hurtig gennemgang.

import numpy as np

a = np.array([10, 20, 30])
b = np.array([1, 2, 3])

print(a + b)   # [11 22 33]
print(a - b)   # [ 9 18 27]

Multiplikation og division

Brug * og / til multiplikation og division element for element — bemærk, at * ikke er matrixmultiplikation. Division giver altid flydende tal, selv når input er heltal.

import numpy as np

a = np.array([10, 20, 30])
b = np.array([2, 4, 5])

print(a * b)    # [ 20  80 150]
print(a / b)    # [5.  5.  6.]
print(a // b)   # [5 5 6]
print(a % b)    # [0 0 0]

Skalararitmetik (introduktion til broadcasting)

Føj et enkelt tal til et array, så anvender NumPy det på hvert element. Det er broadcasting i sin enkleste form — velegnet til at forskyde eller skalere data.

import numpy as np

a = np.array([1, 2, 3, 4, 5])

print(a + 10)   # [11 12 13 14 15]
print(a * 2)    # [ 2  4  6  8 10]
print(a ** 2)   # [ 1  4  9 16 25]
print(a / 10)   # [0.1 0.2 0.3 0.4 0.5]

Potensopløftning og kvadratrod

Brug ** til at opløfte hvert element til en potens. Til kvadratrødder skal du bruge np.sqrt-ufunc'en — den er indbygget i C og hurtigere end en løkke i Python.

import numpy as np

a = np.array([1.0, 4.0, 9.0, 16.0])
print(a ** 0.5)       # [1. 2. 3. 4.]
print(np.sqrt(a))     # [1. 2. 3. 4.]
print(a ** 2)         # [  1.  16.  81. 256.]

Sammenligningsoperatorer returnerer booleske arrays

Sammenlign et array med >, == eller <, så får du et boolesk array med True-/False-værdier — grundlaget for at filtrere dine data.

import numpy as np

a = np.array([3, 7, 2, 9, 1])
print(a > 4)    # [False  True False  True False]
print(a == 2)   # [False False  True False False]
print(a >= 3)   # [ True  True False  True False]

Logiske operatorer på booleske arrays

Brug symbolerne &, | og ~ til at kombinere booleske arrays — ikke ordene and/or/not. Sæt hver betingelse i parenteser for at undgå overraskelser på grund af operatorernes præcedens.

import numpy as np

a = np.array([3, 7, 2, 9, 1])
mask = (a > 2) & (a < 8)
print(mask)   # [ True  True False False False]
print(a[mask])  # [3 7]

Operationer på stedet med +=

Operatorer som += ændrer et array på stedet og sparer hukommelse ved at undgå en ny kopi. Sørg blot for, at dtype-værdierne passer sammen — du kan ikke føje 0.5 til et heltalsarray på denne måde.

import numpy as np

a = np.array([1.0, 2.0, 3.0])
a += 10.0
print(a)   # [11. 12. 13.]
a *= 2.0
print(a)   # [22. 24. 26.]

Aritmetik på 2D-arrays

Aritmetik element for element fungerer på samme måde på 2D-arrays: læg to matricer med samme shape sammen, så lægges hver celle sammen med sin tilsvarende celle. Der er ikke brug for indlejrede løkker.

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

print(A + B)
# [[ 6  8]
#  [10 12]]

print(A * B)  # element-wise, NOT matrix multiply
# [[ 5 12]
#  [21 32]]

dtype-fremrykning i blandede operationer

Blander du to dtype-værdier, fremrykker NumPy begge til den sikrere type, så ingen information går tabt — heltal plus flydende tal giver et flydende tal. Vær opmærksom på, at det ubemærket kan øge hukommelsesforbruget.

import numpy as np

a = np.array([1, 2, 3], dtype=np.int32)
b = np.array([0.5, 1.5, 2.5], dtype=np.float64)

c = a + b
print(c)        # [1.5 3.5 5.5]
print(c.dtype)  # float64

Absolut værdi og fortegn

Brug np.abs til absolutte værdier og np.sign til at få -1, 0 eller +1 for hvert element. Begge er hurtige ufunc'er, som ofte bruges i tabsfunktioner og normaliseringstrin.

import numpy as np

a = np.array([-3, 0, 4, -7, 2])
print(np.abs(a))    # [3 0 4 7 2]
print(np.sign(a))   # [-1  0  1 -1  1]

Hurtig kontrol

Test din forståelse af NumPys aritmetik element for element fra denne lektion.

Opsummering af lektionen

Du har forstået det! NumPy udfører matematik element for element uden løkker, skalarer broadcastes over hele arrayet, og sammenligninger giver booleske arrays. Næste emne er udsnit og indeksering.

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
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Elementvis aritmetik” gratis?

Ja — hele teksten til “Elementvis aritmetik” 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 Pandas & NumPy Academy-kurset, skal du opgradere til CoddyKit PRO. Pandas & NumPy Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Elementvis aritmetik”?

Læg arrays sammen, træk dem fra hinanden, multiplicér og dividér dem element for element, og forstå, hvordan NumPy undgår eksplicitte Python-løkker. Du øver dig i Pandas & NumPy 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å Pandas & NumPy Academy?

Der kræves ingen tidligere erfaring. Pandas & NumPy 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 3 af 4.

Hvor lang tid tager lektionen “Elementvis aritmetik”?

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 Pandas & NumPy Academy-lektion?

Ja. Alle Pandas & NumPy 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

  1. Oprettelse af NumPy-arrays
  2. Arrayattributter og inspektion
  3. Elementvis aritmetik
  4. Arrayudsnit og indeksering
← Tilbage til Pandas & NumPy Academy