# Counting the number of non-NaN elements in a NumPy Array

• Last Updated : 17 Oct, 2021

In this article, we are going to see how to count the number of non-NaN elements in a NumPy array in Python.

NAN: It is used when you don’t care what the value is at that position. Maybe sometimes is used in place of missing data, or corrupted data.

## Method 1: Using Condition

In this example, we will use one-dimensional arrays. In the below-given code, we loop over every entry of the given NumPy array and check if the value is a NaN or not.

## Python3

 `import` `numpy as np`` ` `ex1 ``=` `np.array([``1``, ``4``, ``-``9``, np.nan])``ex2 ``=` `np.array([``1``, ``45``, ``-``2``, np.nan, ``3``, ``                ``-``np.nan, ``3``, np.nan])`` ` ` ` `def` `approach_1(data):``    ``# here the input data, is a numpy ndarray``     ` `    ``# initialize the number of non-NaN elements ``    ``# in data``    ``count ``=` `0`       `     ` `    ``# loop over each entry of the data``    ``for` `entry ``in` `data:          ``       ` `          ``# check whether the entry is a non-NaN value``        ``# or not``        ``if` `not` `np.isnan(entry):     ``           ` `              ``# if not NaN, increment "count" by 1``            ``count ``+``=` `1`              `    ``return` `count`` ` `print``(approach_1(ex1))``print``(approach_1(ex2))`

Output:

```3
5```

## Method 2: Using isnan()

Using the functionality of NumPy arrays, that we can perform an operation on the whole array at once, instead of a single element.

Used function:

• np.isnan(data): Returns a boolean array after performing np.isnan() operation on of the entries of the array, data
• np.sum(): Since we are inputting a boolean array to the sum function, it returns the number of True values (1s) in the bool array.

## Python3

 `import` `numpy as np`` ` `ex3 ``=` `np.array([[``3``, ``4``, ``-``390``, np.nan], ``                ``[np.nan, np.nan, np.nan, ``-``90``]])`` ` `def` `approach_2(data):``    ``return` `np.``sum``(~np.isnan(data))`` ` `print``(approach_2(ex3))`

Output:

`4`

## Method 3:  Using np.count_nonzero() function

numpy.count_nonzero() function counts the number of non-zero values in the array arr.

Syntax : numpy.count_nonzero(arr, axis=None)

Parameters :
arr : [array_like] The array for which to count non-zeros.
axis : [int or tuple, optional] Axis or tuple of axes along which to count non-zeros. Default is None, meaning that non-zeros will be counted along a flattened version of arr.

Return : [int or array of int] Number of non-zero values in the array along a given axis. Otherwise, the total number of non-zero values in the array is returned.

## Python3

 `import` `numpy as np`` ` `ex4 ``=` `np.array([[``0.35834379``, ``0.67202438``, np.nan, np.nan,``                 ``np.nan, ``0.47870971``],``                ``[np.nan, np.nan, np.nan, ``0.08113384``,``                 ``0.70511741``, ``0.15260996``],``                ``[``0.09028477``, np.nan, ``0.16639899``,``                    ``0.47740582``, ``0.7259116``,  ``0.94797347``],``                ``[``0.80305651``,     np.nan, ``0.67949724``,``                    ``0.84112054``, ``0.15951702``, ``0.07510587``],``                ``[``0.28643337``, ``0.00804256``, ``0.36775056``,``                 ``0.19360266``, ``0.07288145``, ``0.37076932``]])`` ` `def` `approach_3(data):``    ``return` `data.size ``-` `np.count_nonzero(np.isnan(data))`` ` `print``(approach_3(ex4))`

Output:

`22`

My Personal Notes arrow_drop_up