0Pricing
Pandas & NumPy Academy · Lezione

Aritmetica elemento per elemento

Sommi, sottragga, moltiplichi e divida gli array elemento per elemento e comprenda come NumPy eviti i cicli Python espliciti.

Aritmetica elemento per elemento è una lezione Pandas & NumPy Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Pandas & NumPy Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Pandas & NumPy Academy include 4 lezioni in totale.

Il problema dei cicli Python

Som que liste in puro Python richiede un ciclo lento. NumPy esegue l'operazione in C, con una velocità spesso da 10 a 100 volte superiore. Questa tecnica si chiama vectorisation. ⚡

# 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]

Addizione e sottrazione

Gli operatori + e - lavorano elemento per elemento su array della stessa forma, associando le posizioni corrispondenti in un'unica operazione rapida.

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]

Moltiplicazione e divisione

Usi * e / per la moltiplicazione e divisione elemento per elemento: tenga presente che * non è una moltiplicazione matriciale. La divisione restituisce sempre float, anche partendo da numeri interi.

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]

Aritmetica scalare (anteprima del broadcasting)

Aggiunga un singolo numero a un array e NumPy lo applicherà a ogni elemento. Questa è la forma più semplice di broadcasting, utile per traslare o ridimensionare i dati.

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]

Elevamento a potenza e radice quadrata

Usi ** per elevare ogni elemento a una potenza. Per le radici quadrate, scelga la ufunc np.sqrt: è integrata in C ed è più veloce di un ciclo 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.]

Gli operatori di confronto restituiscono array booleani

Confronti un array con >, == o < per ottenere un boolean array di valori True/False, la base per filtrare i dati.

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]

Operatori logici su array booleani

Per combinare array booleani, usi i simboli &, | e ~, non le parole and/or/not. Racchiuda ogni condizione tra parentheses per evitare problemi di precedenza.

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]

Operazioni in-place con +=

Operatori come += modificano un array in-place, risparmiando memoria perché evitano di creare una nuova copia. Mantenga compatibili i dtype: in questo modo non può aggiungere 0.5 a un array di interi.

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

Aritmetica su array 2D

L'aritmetica elemento per elemento funziona allo stesso modo sugli array 2D: sommando due matrici della stessa forma, ogni cella viene sommata alla corrispondente. Non servono cicli annidati.

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]]

Promozione del dtype nelle operazioni miste

Quando combina due dtype, NumPy li promuove entrambi al tipo più sicuro, evitando perdite di informazioni: int più float produce float. Attenzione: questo può aumentare silenziosamente l'uso di memoria.

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

Valore assoluto e segno

Usi np.abs per i valori assoluti e np.sign per ottenere -1, 0 o +1 per ogni elemento. Entrambe sono ufunc veloci, comuni nelle funzioni di perdita e nei passaggi di normalizzazione.

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]

Verifica rapida

Verifichi la Sua comprensione dell'aritmetica elemento per elemento di NumPy trattata in questa lezione.

Riepilogo della lezione

Ha capito! NumPy esegue i calcoli elemento per elemento senza cicli, applica gli scalari all'intero array tramite broadcasting e restituisce array booleani per i confronti. Prossimo argomento: slicing e indicizzazione.

Domande Frequenti

La lezione «Aritmetica elemento per elemento» è gratuita?

Sì — il testo completo di «Aritmetica elemento per elemento» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Pandas & NumPy Academy, passa a CoddyKit PRO. Il corso Pandas & NumPy Academy include 4 lezioni in totale.

Cosa imparerò in «Aritmetica elemento per elemento»?

Sommi, sottragga, moltiplichi e divida gli array elemento per elemento e comprenda come NumPy eviti i cicli Python espliciti. Eserciti Pandas & NumPy Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Pandas & NumPy Academy?

Non è richiesta alcuna esperienza precedente. Pandas & NumPy Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Aritmetica elemento per elemento»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Pandas & NumPy Academy?

Sì. Ogni lezione Pandas & NumPy Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Creazione di array NumPy
  2. Attributi e ispezione degli array
  3. Aritmetica elemento per elemento
  4. Slicing e indicizzazione degli array
← Torna a Pandas & NumPy Academy