Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Trasmissione | Matematica con NumPy
Numpy Definitivo
course content

Contenuti del Corso

Numpy Definitivo

Numpy Definitivo

1. Basi di NumPy
2. Indicizzazione e Slicing
3. Funzioni NumPy Comumente Usate
4. Matematica con NumPy

book
Trasmissione

Prima di immergersi nelle operazioni matematiche in NumPy, è importante comprendere un concetto chiave — broadcasting.

Quando NumPy lavora con due array, verifica le loro forme per la compatibilità per determinare se possono essere trasmessi insieme.

Nota

Se due array hanno già la stessa forma, il broadcasting non è necessario.

Stesso Numero di Dimensioni

Supponiamo di avere due array per i quali vogliamo eseguire l'addizione, con le seguenti forme: (2, 3) e (1, 3). NumPy confronta le forme dei due array partendo dalla dimensione più a destra e spostandosi verso sinistra. Cioè, confronta prima 3 e 3, poi 2 e 1.

Due dimensioni sono considerate compatibili se sono uguali o se una di esse è 1:

  • Per le dimensioni 3 e 3, sono compatibili perché sono uguali;

  • Per le dimensioni 2 e 1, sono compatibili perché una di esse è 1.

Poiché tutte le dimensioni sono compatibili, le forme sono considerate compatibili. Pertanto, gli array possono essere trasmessi, risultando in un'operazione di addizione standard tra matrici della stessa forma, che viene eseguita elemento per elemento.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 2D array with 1 row array_2 = np.array([[11, 12, 13]]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy

Nota

array_2 è creato come un array 2D contenente solo una riga, motivo per cui la sua forma è (1, 3).

Ma cosa succederebbe se lo creassimo come un array 1D con una forma di (3,)?

Differente Numero di Dimensioni

Quando un array ha meno dimensioni rispetto all'altro, le dimensioni mancanti sono trattate come se avessero una dimensione di 1. Ad esempio, considera due array con forme (2, 3) e (3,). Qui, 3 = 3, e la dimensione sinistra mancante è considerata essere 1, quindi la forma (3,) diventa (1, 3). Poiché le forme (2, 3) e (1, 3) sono compatibili, questi due array possono essere trasmessi.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 1D array array_2 = np.array([11, 12, 13]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy

Broadcasting di Scalari

Oltre alle operazioni matematiche con gli array, possiamo anche eseguire operazioni simili tra un array e uno scalare (numero) grazie al broadcasting. In questo caso, l'array può avere qualsiasi forma, poiché uno scalare essenzialmente non ha forma, e tutte le sue dimensioni sono considerate essere 1. Pertanto, le forme sono sempre compatibili.

123456
import numpy as np array = np.array([[1, 2, 3], [4, 5, 6]]) print(array.shape) # Broadcasting and element-wise addition result = array + 10 print(result)
copy

Forme Incompatibili

Consideriamo anche un esempio di forme incompatibili, dove un'operazione aritmetica non può essere eseguita perché il broadcasting non è possibile:

Abbiamo un array 2x3 e un array 1D di lunghezza 2, cioè una forma di (2,). La dimensione mancante è considerata essere 1, quindi le forme diventano (2, 3) e (1, 2).

Muovendosi da sinistra a destra: 3 != 2, quindi abbiamo immediatamente dimensioni incompatibili, e quindi forme incompatibili. Se proviamo a eseguire il codice, otterremo un errore:

12345678
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) array_2 = np.array([11, 12]) print(array_2.shape) # ValueError result = array_1 + array_2 print(result)
copy
question mark

Seleziona tutti gli array con forme compatibili:

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 1

Chieda ad AI

expand
ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

course content

Contenuti del Corso

Numpy Definitivo

Numpy Definitivo

1. Basi di NumPy
2. Indicizzazione e Slicing
3. Funzioni NumPy Comumente Usate
4. Matematica con NumPy

book
Trasmissione

Prima di immergersi nelle operazioni matematiche in NumPy, è importante comprendere un concetto chiave — broadcasting.

Quando NumPy lavora con due array, verifica le loro forme per la compatibilità per determinare se possono essere trasmessi insieme.

Nota

Se due array hanno già la stessa forma, il broadcasting non è necessario.

Stesso Numero di Dimensioni

Supponiamo di avere due array per i quali vogliamo eseguire l'addizione, con le seguenti forme: (2, 3) e (1, 3). NumPy confronta le forme dei due array partendo dalla dimensione più a destra e spostandosi verso sinistra. Cioè, confronta prima 3 e 3, poi 2 e 1.

Due dimensioni sono considerate compatibili se sono uguali o se una di esse è 1:

  • Per le dimensioni 3 e 3, sono compatibili perché sono uguali;

  • Per le dimensioni 2 e 1, sono compatibili perché una di esse è 1.

Poiché tutte le dimensioni sono compatibili, le forme sono considerate compatibili. Pertanto, gli array possono essere trasmessi, risultando in un'operazione di addizione standard tra matrici della stessa forma, che viene eseguita elemento per elemento.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 2D array with 1 row array_2 = np.array([[11, 12, 13]]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy

Nota

array_2 è creato come un array 2D contenente solo una riga, motivo per cui la sua forma è (1, 3).

Ma cosa succederebbe se lo creassimo come un array 1D con una forma di (3,)?

Differente Numero di Dimensioni

Quando un array ha meno dimensioni rispetto all'altro, le dimensioni mancanti sono trattate come se avessero una dimensione di 1. Ad esempio, considera due array con forme (2, 3) e (3,). Qui, 3 = 3, e la dimensione sinistra mancante è considerata essere 1, quindi la forma (3,) diventa (1, 3). Poiché le forme (2, 3) e (1, 3) sono compatibili, questi due array possono essere trasmessi.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 1D array array_2 = np.array([11, 12, 13]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy

Broadcasting di Scalari

Oltre alle operazioni matematiche con gli array, possiamo anche eseguire operazioni simili tra un array e uno scalare (numero) grazie al broadcasting. In questo caso, l'array può avere qualsiasi forma, poiché uno scalare essenzialmente non ha forma, e tutte le sue dimensioni sono considerate essere 1. Pertanto, le forme sono sempre compatibili.

123456
import numpy as np array = np.array([[1, 2, 3], [4, 5, 6]]) print(array.shape) # Broadcasting and element-wise addition result = array + 10 print(result)
copy

Forme Incompatibili

Consideriamo anche un esempio di forme incompatibili, dove un'operazione aritmetica non può essere eseguita perché il broadcasting non è possibile:

Abbiamo un array 2x3 e un array 1D di lunghezza 2, cioè una forma di (2,). La dimensione mancante è considerata essere 1, quindi le forme diventano (2, 3) e (1, 2).

Muovendosi da sinistra a destra: 3 != 2, quindi abbiamo immediatamente dimensioni incompatibili, e quindi forme incompatibili. Se proviamo a eseguire il codice, otterremo un errore:

12345678
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) array_2 = np.array([11, 12]) print(array_2.shape) # ValueError result = array_1 + array_2 print(result)
copy
question mark

Seleziona tutti gli array con forme compatibili:

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 1
Siamo spiacenti che qualcosa sia andato storto. Cosa è successo?
some-alt