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 |