The **np.nan** is a constant representing a missing or undefined numerical value in a NumPy array. It stands for **“not a number”** and has a float type. The np.nan is equivalent to NaN and NAN.

**Syntax and Examples**

`numpy.nan`

**Example 1: Basic use of the np.nan**

```
import numpy as np
myarr = np.array([1, 0, np.nan, 3])
print(myarr)
```

**Output**

`[ 1. 0. nan 3.]`

The important thing I would like you to take away from this is that all of our integers have been converted to floats, and that’s because NumPy has defined the **NaN** data type as a float.

Due to implicit upcasting, all our elements have been converted to float data types.

NaN items also precede every other item when mathematical operations are used.

### Example 2: nan value in the console

```
import numpy as np
print(np.nan)
```

**Output**

`nan`

**Example 3: Comparing np.nan values in Python**

You can use the double equal(==) operator to compare **two** **nan** **values** in Python.

```
import numpy as np
print(np.nan == np.nan)
```

**Output**

`False`

**What is the np.isnan() function?**

The **np.isnan()** is a NumPy library function that tests element-wise for **NaN** and returns the result as a boolean array. It takes an array-like input and an optional output parameter. For example, if you have an array **x = [1, 2, np.nan]**, you can use the np.isnan(x) function to get** [False, False, True]**.

```
import numpy as np
print(np.isnan(np.nan))
```

**Output
**

`True`

**FAQ**

** How is np.nan different from None?**

The main difference between **None** and **np.nan** is that None is used in Python to represent the absence of a value, and np.nan is specifically used in NumPy to represent missing or null numerical values.

Unlike **None**, **np.nan** is a floating-point value, and its type is **float**.

**How to check for np.nan values in a NumPy array?**

You can use the **np.isnan()** function to check for np.nan values in a NumPy array. The np.isnan() function returns a Boolean array, with **True** values where the elements in the input array are np.nan and **False** values where the elements are not np.nan.

**How to replace np.nan values in a NumPy array?**

You can use the **np.where()** function to replace np.nan values with a specified value in a Numpy array.

```
import numpy as np
arr = np.array([1, 2, np.nan, 4, 5])
result = np.where(np.isnan(arr), 0, arr)
print(result)
```

**Output**

`[1. 2. 0. 4. 5.]`

**How np.nan can be handled in computations?**

When you use **np.nan** in numerical operations, it propagates through the computation and results in another np.nan value.

**Conclusion**

The **np.nan** stands for **“Not a Number “,** a special floating-point value used in Python’s NumPy library to represent missing or undefined values. The syntax is **np.nan**, which returns the **nan** value.