Examples of how add a new column in a matrix with numpy:
Let's consider an array of size (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]])
Add a column in first position
We want for example to add a new column in the first position containing the line indexes:
>>> table_shape = table.shape>>> table_shape(10, 4)>>> b = np.array([i for i in range(table_shape[0])])>>> barray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a solution is to use the numpy function c_, illustration:
>>> new_table = np.c_[b,a]>>> new_tablearray([[ 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: another solution is to use the numpy function insert, example
>>> 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]])
Add a column in last position
>>> b = np.array(([99,99,99,99,99,99,99,99,99,99]))>>> new_table = np.c_[a,b]>>> new_tablearray([[ 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}
Another solution, using insert, example
>>> 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]])
Add a column for a given index
To add a column for a given index the best approach is to use insert:
Add a column at the index 2
>>> 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]])
Add a column at the index 3
>>> 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.
References
- 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
