Computer 4 dummy

Informatica facile a portata di tutti

Numpy – Creare matrici e lavorarci

In questo capitolo facciamo altri esempi sulla creazione e sulla gestione delle matrici con Numpy.
L’indice del corso lo puoi trovare a questo Link: https://computer4dummy.altervista.org/programmazione-guide-alla-programmazione/numpy-per-python/

 

Ci sono diversi modi per generare array di dati:

>>>np.array([1,2,3)]
array([1, 2, 3])
>>>

Altro esempio per creare un array composto interamente da “0” possiamo:

>>> Z = np.zeros(10)
>>> Z
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])
>>>

Allo stesso modo per ottenere una matrice di “0” di 10 X 10 scriviamo:

>>> Z = np.zeros((10,10))
>>> Z
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])
>>>

Allo stesso modo per ottenere una matrice di 10 X 10 di un altro numero possiamo scrivere:

>>> X = np.ones((10,10))
>>> X
array([[ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.]])
>>>

Per fare la stessa cosa ma con dei numeri random la funzione numpy da utilizzare è random.random

>>> R = np.random.random((10,10))
>>> R
array([[ 0.12823143,  0.6439195 ,  0.3052626 ,  0.75669087,  0.50143011,
         0.9879107 ,  0.77167353,  0.62811936,  0.48506915,  0.26506183],
       [ 0.99276335,  0.50545744,  0.96747583,  0.55199369,  0.79818914,
         0.34739719,  0.22516795,  0.44048322,  0.83399608,  0.80655163],
       [ 0.57805639,  0.93668491,  0.86440008,  0.24254545,  0.44297656,
         0.6936047 ,  0.95956311,  0.67379266,  0.45161894,  0.9949074 ],
       [ 0.84217275,  0.06530454,  0.04371306,  0.15881491,  0.66099833,
         0.54103129,  0.77090747,  0.8246064 ,  0.93789165,  0.36357446],
       [ 0.50391677,  0.65059271,  0.45607154,  0.85538238,  0.78886815,
         0.19997899,  0.32482601,  0.31464923,  0.83849749,  0.02336575],
       [ 0.9922613 ,  0.51918522,  0.16178118,  0.73794899,  0.23708306,
         0.87451303,  0.45253586,  0.64462852,  0.66559244,  0.09705207],
       [ 0.08870258,  0.35537426,  0.55683154,  0.50111844,  0.40630101,
         0.15950876,  0.73078117,  0.92868588,  0.8957682 ,  0.83394847],
       [ 0.97962096,  0.75441574,  0.69240897,  0.01723436,  0.65520131,
         0.71428023,  0.50425399,  0.49474973,  0.12363861,  0.45143698],
       [ 0.46180909,  0.34354024,  0.88412246,  0.43874354,  0.73838351,
         0.40114123,  0.51764277,  0.08744503,  0.45870194,  0.63052689],
       [ 0.09267084,  0.62717099,  0.37938723,  0.34600608,  0.96149999,
         0.09676116,  0.56746558,  0.6612627 ,  0.38987   ,  0.30993742]])
>>>

Con la funzione random si nota subito che i numeri generati sono tutti maggiori di 0 e minori di 1.
In particolare questa funzione restituisce un insieme di numeri uniformemente distribuiti tra 0 e 1.

Se volessimo utilizzare una distribuzione Gaussiana la funzione da utilizzare è random.randn

>>> G = np.random.randn((10,10))

Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    G = np.random.randn((10,10))
  File "mtrand.pyx", line 1680, in mtrand.RandomState.randn (numpy\random\mtrand\mtrand.c:19070)
  File "mtrand.pyx", line 1810, in mtrand.RandomState.standard_normal (numpy\random\mtrand\mtrand.c:19595)
  File "mtrand.pyx", line 163, in mtrand.cont0_array (numpy\random\mtrand\mtrand.c:2383)
TypeError: an integer is required
>>>

In questo caso riceviamo un errore, a causa della sintassi errata, il modo corretto è il seguente:

G = np.random.randn(10,10)

G
Out[8]: 
array([[ 0.10459539, -0.803695  ,  0.9666246 , -1.05405718, -1.12790771,
        -0.89604865, -0.13008793,  1.06255002, -0.63592227, -0.3931531 ],
       [ 0.03620595,  0.62428371, -0.75490317,  0.41166723, -0.44814547,
        -0.16889636,  1.3736372 ,  1.03105035,  0.57755948, -0.27838157],
       [-1.5526612 , -1.02064966, -1.1128314 , -0.79123089,  0.65398794,
         0.39275222, -0.44080293,  0.74604589, -1.89677588,  1.00091171],
       [-0.04770053,  0.43501071, -0.24166985,  1.25911353, -1.12463488,
         2.31303099, -0.40790159, -0.80165665, -1.58984781, -0.88682875],
       [ 0.18492907,  0.56579532,  2.27105641, -0.67263757, -1.04795339,
         0.1925058 ,  0.22896572,  0.77833739,  0.09307996,  0.48840136],
       [-0.12719936, -0.74107563,  0.61977546, -0.21571926, -0.71323819,
         0.1612008 , -0.28554264, -1.77280489,  2.23475742, -2.47945709],
       [-1.64720038, -2.46270158, -0.77080816, -0.43657329, -2.07488745,
         0.77277799,  0.12531887, -0.07752019,  0.37203855, -0.0132842 ],
       [-1.32882266,  0.27889371, -1.18645934,  1.16698321,  1.18321826,
        -0.51056748,  0.32783742,  0.91549402,  0.89609307, -0.99734006],
       [-0.19277056, -0.58808995, -0.20062123, -0.20444701,  0.12903729,
        -0.04629103, -0.09171429, -0.65314111, -0.69896793, -0.11025218],
       [-1.4152367 , -1.87242249,  1.19904596,  0.036599  , -0.13003334,
         0.03729005,  0.46356277, -1.25374728, -0.31569987,  0.22543649]])

Ora la funzione è corretta.
Per visualizzare la media possiamo usare il comando mean()

G.mean()
Out[12]: -0.1505891056061002

Mentre il comando per la varianza è var()

G.var()
Out[13]: 0.98324674267867673