La funzione ones() di numpy in python
La funzione ones() del modulo numpy mi permette di creare una matrice o un vettore con tutti gli elementi uguali a uno.
import numpy as np
np.ones(x [, dtype])
- Il parametro x è la dimensione dell'oggetto array da creare. Ad esempio (2,3) per creare una matrice con due righe e tre colonne.
- Il parametro opzionale dtype, invece, mi consente di definire il tipo di dato ( intero, reale, ecc. ). Se non è indicato, la funzione crea di default gli elementi come numeri reali.
Un esempio pratico
Voglio creare una matrice 2x3.
Importo il modulo numpy nell'interprete python.
import numpy as np
Poi creo un oggetto array bidimensionale con 2 righe e 3 colonne.
m=np.ones((2,3))
Il contenuto dell'oggetto m è una matrice 2x3 con tutti valori uno in formato reale.
array([[1., 1., 1.],
[1., 1., 1.]])
Equivale alla matrice
$$ \begin{pmatrix} 1.0 & 1.0 & 1.0 \\ 1.0 & 1.0 & 1.0 \end{pmatrix} $$
E per avere dei numeri interi negli elementi della matrice?
Per creare una matrice con tutti gli elementi interi,indico il tipo di dato esplicitamente nel comando ones().
m=np.ones((2,3), dtype=int)
Ora gli elementi sono interi
array([[1, 1, 1],
[1, 1, 1]])
Si tratta di una matrice 2x3 con tutti gli elementi interi uguali a uno.
$$ \begin{pmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \end{pmatrix} $$
E per creare una matrice con valori diversi da uno?
Con un semplice escamotage la funzione ones() mi consente di ottenere nuove matrici anche con valori diversi da uno.
Mi basta moltiplicare la matrice m per un numero reale.
m=np.ones((2,3), dtype=int)
m*=7
In questo modo ottengo una matrice con tutti gli elementi uguali a 7.
array([[7, 7, 7],
[7, 7, 7]])
E' una semplice operazione di algebra lineare basata sul prodotto di una matrice per uno scalare.
$$ 7 \cdot \begin{pmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \end{pmatrix} = \begin{pmatrix} 7 & 7 & 7 \\ 7 & 7 & 7 \end{pmatrix} $$
In alternativa, per ottenere lo stesso risultato finale potrei usare la funzione full() di numpy ma questa è un'altra storia.
E così via.