In this article, we will discuss how to append elements at the end on a Numpy Array in python using numpy.append[]
Overview of numpy.append[]
Pythons Numpy module provides a function to append elements to the end of a Numpy Array.
numpy.append[arr, values, axis=None]Arguments:
- arr: array_like
- Given values will be added in copy of this array.
- values: array_like
- Values that needs to be added in the array.
- If axis is provided, then values to be added must be of similar shape as array arr along the axis where we want to add.
- axis: int, optional
- The axis along which values will be added to array. Default value is None.
- If axis is None: Then values array will be flattened and added to the array arr.
- If axis is 0, then values will be appended row wise.
- If axis is 1, then values will be appended column wise.
- The axis along which values will be added to array. Default value is None.
Returns:
- A copy of the given array arr, with values appended to the array.
It doesnt modify the original array in parameter arr. It creates a copy of this array and appends the elements from values parameter, to the end of this new copied array.So, basically it returns a copy of numpy array provided with values appended to it.
Lets understand by examples :
Append elements at the end of 1D numpy array
Lets create a Numpy array i.e.
import numpy as np # create a Numpy array from a list arr = np.array[[1, 2, 3, 4, 5, 6, 7]]Append a single element to the Numpy array
# Append a single element at the end of Numpy Array newArr = np.append[arr, 88]Contents of the new Numpy Array returned :
[ 1 2 3 4 5 6 7 88]Now lets see how append multiple elements to a Numpy array.
Append elements from a list to the Numpy array
import numpy as np # create a Numpy array from a list arr = np.array[[1, 2, 3, 4, 5, 6, 7]] # Append multiple elements from a list to the end of a Numpy Array newArr = np.append[arr, [88,99,100]]Contents of the new Numpy Array returned :
Flatten 2D Numpy Array and add items to it
Lets create a 2D numpy array i.e.
import numpy as np # Create a 2D Numpy Array like Matrix matrixArr = np.array[ [ [1, 2, 3], [ 4, 5, 6] ]]Now append 1D list to this 2D Numpy array.
# Add elements in List to 2D Numpy array by flattening newArr = np.append[matrixArr, [22, 23, 24]]As axis parameter is not provided in call to append[], so both the arrays will be flattened first and then values will appended.Therefore, contents of the new flattened Numpy Array returned are,
[ 1 2 3 4 5 6 22 23 24]Add a Numpy Array to another array row wise
If we provide axis parameter in append[] call then both the arrays should be of same shape.Lets create two 2D numpy arrays,
import numpy as np # Create two 2D Numpy Array like Matrix matrixArr1 = np.array[[[1, 2, 3], [4, 5, 6]]] matrixArr2 = np.array[[[70, 80, 90], [61, 62, 63]]]Now lets append the rows from a numpy array to the end of another numpy array by passing axis as 0 i.e.
Contents of 2D arraymatrixArr2 will be appended to the contents ofmatrixArr1 as rows in new array. Contents of the returned array are,
[[1 2 3] [4 5 6] [1 2 3] [4 5 6]]Add a NumPy Array to another array Column Wise
In the above example if instead of passing axis as 0 we pass axis=1 then contents of 2D arraymatrixArr2 will be appended to the contents ofmatrixArr1 as columns in new array i.e.
import numpy as np # Create two 2D Numpy Array like Matrix matrixArr1 = np.array[[[1, 2, 3], [4, 5, 6]]] matrixArr2 = np.array[[[70, 80, 90], [61, 62, 63]]] newArr = np.append[matrixArr1, matrixArr2 , axis=1]Contents of the new Numpy Array returned are,
[[ 1 2 3 70 80 90] [ 4 5 6 61 62 63]]Error while appending elements in Numpy array of different shapes
If you are providing axis parameter in numpy.append[] then both the arrays should be of same shape along the given axis, otherwise it will raise Error. For example,
Lets try to append a 1D array to 2D array with axis = 1 i.e.
import numpy as np # Create a 2D Numpy Array like Matrix matrixArr = np.array[ [ [1, 2, 3], [ 4, 5, 6] ]] arr5 = np.append[matrixArr, [22, 23, 24], axis=1 ]It will give following error,
ValueError: all the input arrays must have same number of dimensionsWe are trying to row wise append 1D array to a 2D array of shape 2X3, shapes are not compatible therefore, it gave the error. We should make the shape NX3 where N can be anything greater than 1.