In this article we will discuss different ways to delete elements from a Numpy Array by matching value or based on multiple conditions.
Remove all occurrences of an element with given value from numpy array
Suppose we have a numpy array of numbers i.e.
# Create a numpy array from a list arr = np.array([4,5,6,7,8,9,10,11,4,5,6,33,6,7])
Now suppose we want to delete all occurrences of 6 from the above numpy array. Let’s see how to do that,
# Remove all occurrences of elements with value 6 from numpy array arr = arr[arr != 6] print('Modified Numpy Array by deleting all occurrences of 6') print(arr)
Output:
Modified Numpy Array by deleting all occurrences of 6 [ 4 5 7 8 9 10 11 4 5 33 7]
How does this worked ?
Basically arr != 6 returned a bool array of same size as arr with True at places where value is not 6 and False at other places i.e.
[ True True False True True True True True True True False True False True]
Now if we pass this bool array to [] operator of numpy array arr, then it will select the elements from arr foe which bool array has True at corresponding index. Basically it returns the elements from arr which are not 6. Another point to be noted is that it returns a copy of existing array with elements with value 6. We can assign this new array back to arr to have the deletion effect of all occurrences of 6 from the numpy array.
Delete elements in Numpy Array based on multiple conditions
Suppose we have a numpy array of numbers i.e.
# Create a numpy array from a list arr = np.array([4, 5, 6, 7, 8, 9, 10, 11, 4, 5, 6, 33, 6, 7])
Now we want to delete all occurrences of elements below 6 & greater than 10 i.e. keep elements between range 6 to 10 only. Let’s see how to do that,
# Remove all occurrences of elements below 6 & greater than 10 i.e. keep elements between range 6 to 10 only arr = arr[ (arr >= 6) & (arr <= 10) ] print('Modified Numpy Array by deleting all occurrences of elements not in range 6 to 10 : ') print(arr)
Output:
Modified Numpy Array by deleting all occurrences of elements not in range 6 to 10 : [ 6 7 8 9 10 6 6 7]
We basically created a bool array using multiple conditions on numpy array and then passed that bool array to [] operator of numpy array to select the elements only which satisfies the given conditions. So, it returned a copy of numpy array by selecting values below 6 & greater than 10 only and we assigned this new array back to arr to have the deletion effect.
Delete elements by value or condition using np.argwhere() & np.delete()
Suppose we have a numpy array of numbers i.e.
arr = np.array([4, 5, 6, 7, 8, 9, 10, 11, 4, 5, 6, 33, 6, 7])
Now let’s delete all occurrences of 6 from the above numpy array using np.argwhere() & np.delete() i.e.
# Single line solution to delete all occurrences of element with value 6 arr = np.delete(arr, np.argwhere(arr == 6)) print('Modified Numpy Array :') print(arr)
Output:
Modified Numpy Array : [ 4 5 7 8 9 10 11 4 5 33 7]
How did that worked ?
boolArr = (arr == 6)
arr == 6 Returned a Numpy array of bool type with True at places where arr has 6 and False at other places. Size of this bool array will be equal to size of arr. Therefore contents of boolArr are,
[False False True False False False False False False False True False True False]
Now pass this bool array to np.argwhere() which accepts a bool array and return the index positions where bool array has True value i.e.
indexArr = np.argwhere(arr == 6)
Contents of indexArr are,
[[ 2] [10] [12]]
These are index positions from array arr where element value is 6. Now pass this index positions to np.delete() to delete elements from arra at given index positions i.e.
# Delete elements at given index position i.e. elements with value 6 arr = np.delete(arr, indexArr) print('Modified Numpy Array :') print(arr)
Output:
Modified Numpy Array : [ 4 5 7 8 9 10 11 4 5 33 7]
It deleted all occurrences of element with value 6.
Delete elements by multiple conditions using np.argwhere() & np.delete()
Contents of original Numpy array arr is,
[4, 5, 6, 7, 8, 9, 10, 11, 4, 5, 6, 33, 6, 7]
Let’s delete all occurrences of elements between 6 to 10 in a single line i.e.
# Single line solution to delete all occurrences of element between 6 to 10 arr = np.delete(arr, np.argwhere( (arr >= 6) & (arr <= 10) )) print('Modified Numpy Array :') print(arr)
Output:
Modified Numpy Array : [ 4 5 11 4 5 33]
Complete example is as follows:
import numpy as np def main(): # Create a numpy array from a list arr = np.array([4,5,6,7,8,9,10,11,4,5,6,33,6,7]) print('Original Array : ', arr) print('*** Delete all occurrences of an element in Numpy Array ***') print(arr != 6) # Remove all occurrences of elements with value 6 from numpy array arr = arr[arr != 6] print('Modified Numpy Array by deleting all occurrences of 6') print(arr) print('*** Delete elements in Numpy Array based on multiple conditions ***') # Create a numpy array from a list arr = np.array([4, 5, 6, 7, 8, 9, 10, 11, 4, 5, 6, 33, 6, 7]) print('Original Array : ', arr) # Remove all occurrences of elements below 6 & greater than 10 i.e. keep elements between range 6 to 10 only arr = arr[ (arr >= 6) & (arr <= 10) ] print('Modified Numpy Array by deleting all occurrences of elements not in range 6 to 10 : ') print(arr) print('*** Delete elements by value using np.argwhere() & np.delete() ***') arr = np.array([4, 5, 6, 7, 8, 9, 10, 11, 4, 5, 6, 33, 6, 7]) print('Original Array : ') print(arr) boolArr = (arr == 6) print('Bool Array with True for elements with value 6 : ') print(boolArr) indexArr = np.argwhere(boolArr) print('Index positions from array arr where element value is 6 :') print(indexArr) # Delete elements at given index position i.e. elements with value 6 arr = np.delete(arr, indexArr) print('Modified Numpy Array :') print(arr) arr = np.array([4, 5, 6, 7, 8, 9, 10, 11, 4, 5, 6, 33, 6, 7]) # Single line solution to delete all occurrences of element with value 6 arr = np.delete(arr, np.argwhere(arr == 6)) print('Modified Numpy Array :') print(arr) arr = np.array([4, 5, 6, 7, 8, 9, 10, 11, 4, 5, 6, 33, 6, 7]) # Single line solution to delete all occurrences of element between 6 to 10 arr = np.delete(arr, np.argwhere( (arr >= 6) & (arr <= 10) )) print('Modified Numpy Array :') print(arr) if __name__ == '__main__': main()
Output:
Original Array : [ 4 5 6 7 8 9 10 11 4 5 6 33 6 7] *** Delete all occurrences of an element in Numpy Array *** [ True True False True True True True True True True False True False True] Modified Numpy Array by deleting all occurrences of 6 [ 4 5 7 8 9 10 11 4 5 33 7] *** Delete elements in Numpy Array based on multiple conditions *** Original Array : [ 4 5 6 7 8 9 10 11 4 5 6 33 6 7] Modified Numpy Array by deleting all occurrences of elements not in range 6 to 10 : [ 6 7 8 9 10 6 6 7] *** Delete elements by value using np.argwhere() & np.delete() *** Original Array : [ 4 5 6 7 8 9 10 11 4 5 6 33 6 7] Bool Array with True for elements with value 6 : [False False True False False False False False False False True False True False] Index positions from array arr where element value is 6 : [[ 2] [10] [12]] Modified Numpy Array : [ 4 5 7 8 9 10 11 4 5 33 7] Modified Numpy Array : [ 4 5 7 8 9 10 11 4 5 33 7] Modified Numpy Array : [ 4 5 11 4 5 33]
Pandas Tutorials -Learn Data Analysis with Python
-
Pandas Tutorial Part #1 - Introduction to Data Analysis with Python
-
Pandas Tutorial Part #2 - Basics of Pandas Series
-
Pandas Tutorial Part #3 - Get & Set Series values
-
Pandas Tutorial Part #4 - Attributes & methods of Pandas Series
-
Pandas Tutorial Part #5 - Add or Remove Pandas Series elements
-
Pandas Tutorial Part #6 - Introduction to DataFrame
-
Pandas Tutorial Part #7 - DataFrame.loc[] - Select Rows / Columns by Indexing
-
Pandas Tutorial Part #8 - DataFrame.iloc[] - Select Rows / Columns by Label Names
-
Pandas Tutorial Part #9 - Filter DataFrame Rows
-
Pandas Tutorial Part #10 - Add/Remove DataFrame Rows & Columns
-
Pandas Tutorial Part #11 - DataFrame attributes & methods
-
Pandas Tutorial Part #12 - Handling Missing Data or NaN values
-
Pandas Tutorial Part #13 - Iterate over Rows & Columns of DataFrame
-
Pandas Tutorial Part #14 - Sorting DataFrame by Rows or Columns
-
Pandas Tutorial Part #15 - Merging or Concatenating DataFrames
-
Pandas Tutorial Part #16 - DataFrame GroupBy explained with examples
Are you looking to make a career in Data Science with Python?
Data Science is the future, and the future is here now. Data Scientists are now the most sought-after professionals today. To become a good Data Scientist or to make a career switch in Data Science one must possess the right skill set. We have curated a list of Best Professional Certificate in Data Science with Python. These courses will teach you the programming tools for Data Science like Pandas, NumPy, Matplotlib, Seaborn and how to use these libraries to implement Machine learning models.
Checkout the Detailed Review of Best Professional Certificate in Data Science with Python.
Remember, Data Science requires a lot of patience, persistence, and practice. So, start learning today.