Thanks to visit codestin.com
Credit goes to www.tutorialspoint.com

NumPy nanstd() Function



The NumPy nanstd() function computes the standard deviation of the elements in an array while ignoring NaN values. It measures the spread or dispersion of a distribution, treating NaN values as missing data. By default, the standard deviation is calculated over the flattened array, but it can also be computed along a specified axis.

If a slice contains only NaN values or has zero degrees of freedom, the function returns NaN and raises a RuntimeWarning.

In statistics, the standard deviation is the square root of the variance. The formula is std = sqrt(sum((x_i - mean)^2) / N), where x_i is each data point, mean is the mean of the data, and N is the number of valid (non-NaN) data points.

For a one-dimensional array, the standard deviation is computed over all elements excluding NaN values. For multi-dimensional arrays, the standard deviation is computed along the specified axis, ignoring NaN values.

Syntax

Following is the syntax of the NumPy nanstd() function −

numpy.nanstd(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>, where=<no value>, mean=<no value>, correction=<no value>)

Parameters

Following are the parameters of the NumPy nanstd() function −

  • a: Input array or object that can be converted to an array. It can be a NumPy array, list, or a scalar value.
  • axis (optional): Axis or axes along which the standard deviation is computed. Default is None, which means the standard deviation is computed over the entire array.
  • dtype (optional): Data type to use in computing the standard deviation. If None, it is inferred from the input array.
  • out (optional): A location into which the result is stored. If provided, it must have the same shape as the expected output.
  • ddof (optional): Delta Degrees of Freedom. The divisor used in the calculation is N - ddof, where N is the number of non-NaN elements. Default is 0.
  • keepdims (optional): If True, the reduced dimensions are retained as dimensions of size one in the output. Default is False.
  • where(optional): The elements that to be included in the standard deviation
  • mean(optional): It provide's the mean to prevent its re-calculation. The mean should have a shape as if it was calculated with keepdims=True. The axis for the calculation of the mean should be the same as used in the call to this std function.
  • correction(optional): This function calculates the standard deviation of elements in an array, measuring the dispersion or spread of data around the mean, with options to compute along specified axes, apply degrees of freedom (`ddof`), and retain dimensions.

Return Values

This function returns the standard deviation of the input array while ignoring NaN values. The result is a scalar if the input is one-dimensional, and an array if the input is multi-dimensional.

Example

Following is a basic example to compute the standard deviation of an array while ignoring NaN values using the NumPy nanstd() function −

import numpy as np
# input array with NaN values
x = np.array([1, 2, np.nan, 4, 5])
# applying nanstd 
result = np.nanstd(x)
print("Standard Deviation Result (ignoring NaN):", result)

Output

Following is the output of the above code −

Standard Deviation Result (ignoring NaN): 1.5811388300841898

Example: Specifying an Axis

The nanstd() function can compute the standard deviation along a specific axis of a multi-dimensional array while ignoring NaN values. In the following example, we have computed the standard deviation along axis 0 (columns) and axis 1 (rows) of a 2D array −

import numpy as np
# 2D array with NaN values
x = np.array([[1, 2, np.nan], [4, 5, 6], [7, 8, np.nan]])
# applying nanstd along axis 0 (columns)
result_axis0 = np.nanstd(x, axis=0)
# applying nanstd along axis 1 (rows)
result_axis1 = np.nanstd(x, axis=1)
print("Standard Deviation along axis 0 (ignoring NaN):", result_axis0)
print("Standard Deviation along axis 1 (ignoring NaN):", result_axis1)

Output

Following is the output of the above code −

Standard Deviation along axis 0 (ignoring NaN): [2.44948974 2.44948974 0.        ]
Standard Deviation along axis 1 (ignoring NaN): [0.5        0.81649658 0.5       ]

Example: Usage of 'ddof' Parameter

The ddof(Delta Degrees of Freedom) parameter allows us to adjust the degrees of freedom for the calculation. By default, ddof=0, but we can set it to a different value to change the divisor used in the calculation. In the following example, we have computed the standard deviation with ddof=1 while ignoring NaN values −

import numpy as np
# input array with NaN values
x = np.array([1, 2, np.nan, 4, 5])
# applying nanstd with ddof=1
result = np.nanstd(x, ddof=1)
print("Standard Deviation with ddof=1 (ignoring NaN):", result)

Output

Following is the output of the above code −

Standard Deviation with ddof=1 (ignoring NaN): 1.8708286933869707

Example: Handling a 3D Array

In the following example, we demonstrate the use of the nanstd() function on a 3D array, computing the standard deviation along various axes while ignoring `NaN` values −

import numpy as np
# 3D array with NaN values
x = np.array([
    [[1, np.nan], [3, 4]],
    [[5, 6], [np.nan, 8]],
    [[9, 10], [11, np.nan]]
])
# applying nanstd along axis 0
result_axis0 = np.nanstd(x, axis=0)
# applying nanstd along axis 1
result_axis1 = np.nanstd(x, axis=1)
print("Standard Deviation along axis 0 (ignoring NaN):\n", result_axis0)
print("Standard Deviation along axis 1 (ignoring NaN):\n", result_axis1)

Output

Following is the output of the above code −

Standard Deviation along axis 0 (ignoring NaN):
 [[3.26598632 2.        ]
 [4.         2.        ]]
Standard Deviation along axis 1 (ignoring NaN):
 [[1. 0.]
 [0. 1.]
 [1. 0.]]
numpy_statistical_functions.htm
Advertisements