Computer 4 dummy

Informatica facile a portata di tutti

Numpy – Prodotto scalare e algebra lineare

Array

Facciamo ancora un po di esercizi con gli array creando due nuovi array.
L’indice del corso lo puoi trovare a questo Link: https://computer4dummy.altervista.org/programmazione-guide-alla-programmazione/numpy-per-python/

a = np.array([1,2])
b = np.array([2,1])

Supponiamo di voler assegnare alla variabile res  la somma del prodotto degli elementi degli array quindi: 1*2 + 2*1 = 4 

res = 0

for e, f in zip(a,b):
    res += e*f
 
res
Out[43]: 4

Otteniamo 4 come previsto, altra operazione è la moltiplicazione di due array

a*b
Out[44]: array([2, 2])

Possiamo quindi ottenere lo stesso risultato facendo la somma della moltiplicazione dei 2 array:

np.sum(a*b)
Out[45]: 4

Questo è possibile solo quando gli array sono delle stesse dimensioni.
Un altro modo per ottenere lo stesso risultato è il seguente:

(a*b).sum()
Out[46]: 4

Prodotto di due array .dot()

La guida di riferimento è disponibile in lingua inglese al seguente link: https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.dot.html#numpy.dot

Nel modulo numpy è presente una funzione dot() che restituisce il prodotto di due array, vediamo quindi un po di esempi:

np.dot(a,b)
Out[50]: 4

Può essere anche richiamata:

a.dot(b)
Out[51]: 4

b.dot(a)
Out[52]: 4

Radice quadrata .sqrt()

La guida di riferimento è disponibile in lingua inglese al seguente link: https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.sqrt.html#numpy.sqrt

Altri esempi possono essere utilizzati per calcolare la radice quadrata della somma dei quadrati di ogni elemento dell’array.

amag = np.sqrt((a*a).sum())

amag
Out[54]: 2.2360679774997898

Altre funzioni all’interno del metodo linalg

La guida di riferimento è disponibile in lingua inglese al seguente link: https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.linalg.html

Prodotto scalare

La guida di riferimento è disponibile in lingua inglese al seguente link: https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.norm.html#numpy.linalg.norm

amag = np.linalg.norm(a)


amag
Out[56]: 2.2360679774997898

Per il coseno dell’angolo

cosangle = a.dot(b) / (np.linalg.norm(a) * np.linalg.norm(b))

cosangle
Out[58]: 0.79999999999999982

L’angolo è:

angle = np.arccos(cosangle)

angle
Out[60]: 0.6435011087932847

 

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.