Comment ajouter une colonne dans un tableau avec numpy et python ?

Published: 19 mars 2019

DMCA.com Protection Status

Exemples de comment ajouter une colonne dans un tableau avec numpy et python ?

Soit un tableau de dimension (10,4):

\begin{equation}
A = \left( \begin{array}{ccc}
4 & 11 & 10 & 2 \\
8 & 18 & 5 & 10 \\
3 & 15 & 17 & 13 \\
14 & 15 & 17 & 16 \\
4 & 11 & 2 & 10 \\
1 & 14 & 5 & 11 \\
16 & 5 & 12 & 8 \\
17 & 17 & 15 & 0 \\
4 & 5 & 12 & 8 \\
6 & 2 & 19 & 15
\end{array}\right)
\end{equation}

>>> import numpy as np
>>> a = np.array([[ 4, 11, 10,  2],
...        [ 8, 18,  5, 10],
...        [ 3, 15, 17, 13],
...        [14, 15, 17, 16],
...        [ 4, 11,  2, 10],
...        [ 1, 14,  5, 11],
...        [16,  5, 12,  8],
...        [17, 17, 15,  0],
...        [ 4,  5, 12,  8],
...        [ 6,  2, 19, 15]])

Ajouter une colonne en première position

on veut par exemple ajouter une colonne en première position contenant l'indice de la ligne:

>>> table_shape = table.shape
>>> table_shape
(10, 4)
>>> b = np.array([i for i in range(table_shape[0])])
>>> b
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

pour cela on peut utiliser la fonction numpy c_, illustration:

>>> new_table = np.c_[b,a]
>>> new_table
array([[ 0,  4, 11, 10,  2],
       [ 1,  8, 18,  5, 10],
       [ 2,  3, 15, 17, 13],
       [ 3, 14, 15, 17, 16],
       [ 4,  4, 11,  2, 10],
       [ 5,  1, 14,  5, 11],
       [ 6, 16,  5, 12,  8],
       [ 7, 17, 17, 15,  0],
       [ 8,  4,  5, 12,  8],
       [ 9,  6,  2, 19, 15]])

\begin{equation}
A = \left( \begin{array}{ccc}
0 & 4 & 11 & 10 & 2\\
1 & 8 & 18 & 5 & 10\\
2 & 3 & 15 & 17 & 13\\
3 & 14 & 15 & 17 & 16\\
4 & 4 & 11 & 2 & 10\\
5 & 1 & 14 & 5 & 11\\
6 & 16 & 5 & 12 & 8\\
7 & 17 & 17 & 15 & 0\\
8 & 4 & 5 & 12 & 8\\
9 & 6 & 2 & 19 & 15
\end{array}\right)
\end{equation}

Note: une autre solution est d'utiliser la fonction numpy insert, exemple

>>> np.insert(a,0,b,axis=1)
array([[ 0,  4, 11, 10,  2],
       [ 1,  8, 18,  5, 10],
       [ 2,  3, 15, 17, 13],
       [ 3, 14, 15, 17, 16],
       [ 4,  4, 11,  2, 10],
       [ 5,  1, 14,  5, 11],
       [ 6, 16,  5, 12,  8],
       [ 7, 17, 17, 15,  0],
       [ 8,  4,  5, 12,  8],
       [ 9,  6,  2, 19, 15]])

Ajouter une colonne en dernière position

>>> b = np.array(([99,99,99,99,99,99,99,99,99,99]))
>>> new_table = np.c_[a,b]
>>> new_table
array([[ 4, 11, 10,  2, 99],
       [ 8, 18,  5, 10, 99],
       [ 3, 15, 17, 13, 99],
       [14, 15, 17, 16, 99],
       [ 4, 11,  2, 10, 99],
       [ 1, 14,  5, 11, 99],
       [16,  5, 12,  8, 99],
       [17, 17, 15,  0, 99],
       [ 4,  5, 12,  8, 99],
       [ 6,  2, 19, 15, 99]])

\begin{equation}
A = \left( \begin{array}{ccc}
4 & 11 & 10 & 2 & 99\\
8 & 18 & 5 & 10 & 99\\
3 & 15 & 17 & 13 & 99\\
14 & 15 & 17 & 16 & 99\\
4 & 11 & 2 & 10 & 99\\
1 & 14 & 5 & 11 & 99\\
16 & 5 & 12 & 8 & 99\\
17 & 17 & 15 & 0 & 99\\
4 & 5 & 12 & 8 & 99\\
6 & 2 & 19 & 15 & 99)
\end{array}\right)
\end{equation}

Autre solution, en utilisant la fonction numpy insert, exemple

>>> np.insert(a,table_shape[1],b,axis=1)
array([[ 4, 11, 10,  2, 99],
       [ 8, 18,  5, 10, 99],
       [ 3, 15, 17, 13, 99],
       [14, 15, 17, 16, 99],
       [ 4, 11,  2, 10, 99],
       [ 1, 14,  5, 11, 99],
       [16,  5, 12,  8, 99],
       [17, 17, 15,  0, 99],
       [ 4,  5, 12,  8, 99],
       [ 6,  2, 19, 15, 99]])

Insérer une colonne pour un indice donné

Pour Insérer une colonne pour un indice donné le plus simple est de passer directement par la fonction numpy insert.

Insérer une colonne en troisième position

>>> b = np.array(([99,99,99,99,99,99,99,99,99,99]))
>>> np.insert(a,2,b,axis=1)
array([[ 4, 11, 99, 10,  2],
       [ 8, 18, 99,  5, 10],
       [ 3, 15, 99, 17, 13],
       [14, 15, 99, 17, 16],
       [ 4, 11, 99,  2, 10],
       [ 1, 14, 99,  5, 11],
       [16,  5, 99, 12,  8],
       [17, 17, 99, 15,  0],
       [ 4,  5, 99, 12,  8],
       [ 6,  2, 99, 19, 15]])

Insérer une colonne en quatrième position

>>> b = np.array(([99,99,99,99,99,99,99,99,99,99]))
>>> np.insert(a,3,b,axis=1)
array([[ 4, 11, 10, 99,  2],
       [ 8, 18,  5, 99, 10],
       [ 3, 15, 17, 99, 13],
       [14, 15, 17, 99, 16],
       [ 4, 11,  2, 99, 10],
       [ 1, 14,  5, 99, 11],
       [16,  5, 12, 99,  8],
       [17, 17, 15, 99,  0],
       [ 4,  5, 12, 99,  8],
       [ 6,  2, 19, 99, 15]])

etc.

Références

Liens Site
c_ docs.scipy.org
numpy.insert docs.scipy.org
How to add an extra column to a NumPy array stackoverflow
numpy.random.randint docs.scipy.org