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