w3resource

NumPy: Remove nan values from a given array


Remove nan Values from Array

Write a NumPy program to remove nan values from a given array.

Sample Solution:

Python Code:

# Importing the NumPy library and aliasing it as 'np'
import numpy as np

# Creating a NumPy array 'x' containing integers and 'np.nan' (representing missing values)
x = np.array([200, 300, np.nan, np.nan, np.nan, 700])

# Creating a 2D NumPy array 'y' containing integers and 'np.nan' (representing missing values)
y = np.array([[1, 2, 3], [np.nan, 0, np.nan], [6, 7, np.nan]])

# Printing the original array 'x'
print("Original array:")
print(x)

# Removing 'np.nan' values from array 'x' and storing the result in 'result'
result = x[np.logical_not(np.isnan(x))]

# Printing the array 'x' after removing 'np.nan' values
print("After removing nan values:")
print(result)

# Printing a new line
print("\nOriginal array:")

# Printing the original array 'y'
print(y)

# Removing 'np.nan' values from array 'y' and storing the result in 'result'
result = y[np.logical_not(np.isnan(y))]

# Printing the array 'y' after removing 'np.nan' values
print("After removing nan values:")
print(result)

Sample Output:

Original array:
[200. 300.  nan  nan  nan 700.]
After removing nan values:
[200. 300. 700.]

Original array:
[[ 1.  2.  3.]
 [nan  0. nan]
 [ 6.  7. nan]]
After removing nan values:
[1. 2. 3. 0. 6. 7.]

Explanation:

The above code shows how to remove NaN (Not-a-Number) elements from two NumPy arrays: a 1D array 'x' and a 2D array 'y'.

x = np.array([200, 300, np.nan, np.nan, np.nan ,700]): Create a 1D NumPy array 'x' containing some numbers and NaN values.

y = np.array([[1, 2, 3], [np.nan, 0, np.nan] ,[6,7,np.nan]]): Create a 2D NumPy array 'y' containing some numbers and NaN values.

result = x[np.logical_not(np.isnan(x))]: Use np.isnan(x) to create a boolean array where 'True' represents a NaN value in 'x'. Then, use np.logical_not to invert this boolean array. Finally, use boolean indexing to extract elements from 'x' where the corresponding value in the inverted boolean array is 'True' (i.e., not NaN). Store the result in the variable 'result'.

result = y[np.logical_not(np.isnan(y))]: Repeat the same process for the 2D array 'y'. Note that 'y' is flattened before removing NaN values, so the resulting 'result' variable will be a 1D array.

Pictorial Presentation:

Python NumPy: Remove nan values from a given array

Python-Numpy Code Editor: