Tensori, matrici, vettori e python : media e somma – seconda parte

INFORMATICA, MATEMATICA

Bene poichè nella prima parte di questa serie di articoli abbiamo introdotto il concetto di tensore ed abbiamo anche inziato a capire il significato di dimensionalità rank e shape (forma), in questo articolo possiamo iniziare ad introdurre alcune tipiche operazioni che si possono fare sugli stessi. Prima di tutto, però, vorrei  introdurre un semplice strumento matematico che ci aiuterà in seguito, ovvero, la sommatoria che si rappresenta con il la lettera greca  sigma maiuscola \Sigma . Questo strumento matematico è molto utile in quanto semplifica la formalizzazione e la rappresentazione di serie numeriche. Faccio un esempio, se volessi scrivere la somma di tutti i numeri da 1 a 100 potrei scrivere  la sequenza:

S = 1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+ … +999+100

ma potrei usare la forma compatta e sicuramente più bella:

S=\sum_{i=1}^{1000}i

la cosa interessante è che se in python volessi fare la sommatoria S di una serie di numeri rappresentati in un vettore ad esempio

X = [1,2,3,4,5,6,7,8,9,10,10]

posso fare semplicemente:

>>> X=[1,2,3,4,5,6,7,8,9,10]

>>> sum(X)

55

>>> 

mentre se volessi fare la media di un vettore la cui rappresentazione compatta è M=\frac{1}{n}\sum_{i=1}^{n}x_{i}   ove  x_{i} sono gli elementi del vettore, in python sarà sufficiente eseguire:

>>> import numpy as np

>>> X=np.array([1,2,3,4,5,6,7,8,9,10])

>>> np.mean(X)

5.5

potrei fare una cosa simile senza scomodare numpy ad esempio definendo una funzione che fa l’operazione di media

X=[1,2,3,4,5,6,7,8,9,10]

def media(lista):
    return sum(lista)/len(lista)

print(media(X))

Attenzione quando eseguite questa operazione in python2 troverete una bella sorpresa perchè per default la “/” restituisce l’arrotondamento ad intero e quindi vi restituirà 5. Valutate questi esempi per comprendere le differenze tra Python2 e Python3

Python 2.7.10 vs. Python 3.5

print(2/3)  --> 0             #Python2.7

print(2/3) --> 0.666666666666 #Python 3.5

Python 2.7.10 vs. Python 3.5

print(4/2)  --> 2  #Python2.7

print(4/2) --> 2.0 #Python 3.5

Now if you want to have (in python 2.7) same output as in python 3.5, you can do the following:

Python 2.7.10

from __future__ import division

print(4/2)  --> 2.0           #Python2.7

print(2/3) --> 0.666666666666 #Python 2.7

<<prima parte

terza parte >>

Se vuoi farmi qualche richiesta o contattarmi per un aiuto riempi il seguente form

    Comments