Exemples de comment ajouter une colonne de 1 à une matrice avec numpy
Ajouter une colonne de 1 à une matrice avec des données d'entraînement
Considérons la matrice X avec des données d'entraînement (avec n=6 observations et d=3 "features"):
\begin{equation}
X = \left( \begin{array}{ccc}
x_{11} & x_{12} & x_{13} \\
x_{21} & x_{22} & x_{23} \\
x_{31} & x_{32} & x_{33} \\
x_{41} & x_{42} & x_{43} \\
x_{51} & x_{52} & x_{53} \\
x_{61} & x_{62} & x_{63}
\end{array}\right)
\end{equation}
L'objectif est d'ajouter une colonne de 1 à la matrice X:
\begin{equation}
X = \left( \begin{array}{ccc}
1 & x_{11} & x_{12} & x_{13} \\
1 & x_{21} & x_{22} & x_{23} \\
1 & x_{31} & x_{32} & x_{33} \\
1 & x_{41} & x_{42} & x_{43} \\
1 & x_{51} & x_{52} & x_{53} \\
1 & x_{61} & x_{62} & x_{63}
\end{array}\right)
\end{equation}
Créons une matrice avec numpy:
>>> import numpy as np
>>> X = np.random.randint(100, size=(6,3))
>>> X
array([[46, 16, 11],
[79, 95, 54],
[35, 3, 90],
[62, 71, 63],
[14, 61, 80],
[92, 69, 57]])
Pour créer une matrice de taille (6-by-1) on peut utiliser la fonction ones():
>>> b = np.ones(X.shape[0])
>>> b.shape
(6,)
et pour ajouter celle ci a la matrice X on peut ensuite utiliser numpy.c_, exemple:
>>> X = np.c_[np.ones(X.shape[0]),X]
>>> X
array([[ 1., 46., 16., 11.],
[ 1., 79., 95., 54.],
[ 1., 35., 3., 90.],
[ 1., 62., 71., 63.],
[ 1., 14., 61., 80.],
[ 1., 92., 69., 57.]])
Note: verifier si d < n sinon transposer la matrice:
>>> X
array([[46, 79, 35, 62, 14, 92],
[16, 95, 3, 71, 61, 69],
[11, 54, 90, 63, 80, 57]])
>>> if X.shape[0] < X.shape[1]: X = X.T
...
>>> X
array([[46, 16, 11],
[79, 95, 54],
[35, 3, 90],
[62, 71, 63],
[14, 61, 80],
[92, 69, 57]])
Ajouter une colonne de 1 à une matrice 1D
Ajouter une colonne de 1 à une matrice 1D, exemple
>>> Y_new = np.array([11., 64., 20.])
>>> Y_new
array([ 11., 64., 20.])
On peut utiliser la fonction numpy concatenate:
>>> Y_new = np.concatenate([np.ones(1),Y_new])
>>> Y_new
array([ 1., 11., 64., 20.])
Références
Liens | Site |
---|---|
numpy.c_ | scipy doc |
numpy.concatenate | scipy doc |
numpy.transpose | scipy doc |
ones() | scipy doc |