How to Remove Elements From Array in NumPy
In this article, we will learn about two ways to remove elements from a NumPy array.
Remove Elements Using numpy.delete()
Function
Refer to the following code.
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7]
modifiedArray = np.delete(myArray, indexes)
print(modifiedArray)
Output:
[ 1 2 3 5 7 9 10]
In the above code, we use the delete()
function of the NumPy
library. The delete()
function accepts three parameters, namely, arr
, obj
, and axis
and outputs a NumPy array. The arr
is the NumPy array we wish to delete elements from. obj
is a list of integer numbers. These numbers represent the indexes of the elements that should be deleted from the array. Lastly, the axis
is an optional argument. axis
refers to the axis along which the elements targetted by the obj
should be deleted. If a None
value is assigned to this parameter, arr
is flattened, and deletion is carried out on this flattened array.
As usual, if an index that lies outside the range of arr
is provided to this method, it throws an IndexError
exception.
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7, 34]
modifiedArray = np.delete(myArray, indexes)
print(modifiedArray)
Output:
Traceback (most recent call last):
File "<string>", line 5, in <module>
File "<__array_function__ internals>", line 5, in delete
File "/path/to/library/numpy/lib/function_base.py", line 4480, in delete
keep[obj,] = False
IndexError: index 34 is out of bounds for axis 0 with size 10
To learn more about this function, refer to the official documentation of this function here
Here are two more examples for deletion in a multidimensional NumPy array.
import numpy as np
myArray = np.array([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]])
modifiedArray = np.delete(myArray, [1, 2], 1)
print(modifiedArray)
Output:
[[ 1 4 5]
[11 14 15]
[21 24 25]]
Use None
as the value for parameter axis
.
import numpy as np
myArray = np.array([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]])
modifiedArray = np.delete(myArray, [1, 2], None)
print(modifiedArray)
Output:
[ 1 4 5 11 12 13 14 15 21 22 23 24 25]
Remove Elements Using numpy.setdiff1d()
Function
This time we will use the setdiff1d()
function from NumPy
. This function accepts three parameters, ar1
, ar2
, and assume_unique
. ar1
and ar2
are two NumPy arrays. And assume_unique
is an optional boolean argument. Its default value is False
. When it’s True
, then the two input arrays are assumed to be unique, and this assumption can speed up the calculation time.
setdiff1d()
returns the unique values in ar1
that are not in ar2
.
Refer to the following code.
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7]
modifiedArray = np.setdiff1d(myArray, indexes)
print(modifiedArray)
Output:
[ 1 2 4 6 8 9 10]
Unlike numpy.delete()
, both the arrays are NumPy arrays with actual elements in them but not indexes.
To learn more about this function, refer to the official documentation of this function here.