Comment ajouter une colonne de 1 à une matrice avec numpy ? (machine learning; python)

15 novembre 2019    /    Viewed: 1570    /    Comments: 0    /    Edit


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


Card image cap
profile-image
Daidalos

Je développe le présent site avec le framework python Django. Je m'intéresse aussi actuellement dans le cadre de mon travail au machine learning pour plusieurs projets (voir par exemple) et toutes suggestions ou commentaires sont les bienvenus !