How to Use std in NumPy: Calculate Standard Deviation Easily
Use
numpy.std() to calculate the standard deviation of array elements. You can specify the axis to compute along rows or columns and control whether to use population or sample standard deviation with the ddof parameter.Syntax
The basic syntax of numpy.std() is:
numpy.std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=False)
Where:
a: Input array.axis: Axis or axes along which to compute the standard deviation. Default isNone(compute over the whole array).dtype: Data type for computation (optional).out: Alternative output array to place the result (optional).ddof: Delta degrees of freedom. The divisor used in calculation isN - ddof. Useddof=1for sample standard deviation.keepdims: IfTrue, retains reduced dimensions with size 1.
python
numpy.std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=False)
Example
This example shows how to calculate the standard deviation of a 2D array along different axes and how ddof affects the result.
python
import numpy as np # Create a 2D array arr = np.array([[1, 2, 3], [4, 5, 6]]) # Standard deviation of all elements (population std) std_all = np.std(arr) # Standard deviation along columns (axis=0) std_cols = np.std(arr, axis=0) # Standard deviation along rows (axis=1) std_rows = np.std(arr, axis=1) # Sample standard deviation (ddof=1) of all elements std_sample = np.std(arr, ddof=1) print(f"Std of all elements: {std_all}") print(f"Std along columns: {std_cols}") print(f"Std along rows: {std_rows}") print(f"Sample std of all elements: {std_sample}")
Output
Std of all elements: 1.707825127659933
Std along columns: [1.5 1.5 1.5]
Std along rows: [0.81649658 0.81649658]
Sample std of all elements: 1.8257418583505538
Common Pitfalls
Common mistakes when using numpy.std() include:
- Not setting
ddof=1when you want the sample standard deviation, which can lead to underestimating variability. - Forgetting to specify
axiswhen working with multi-dimensional arrays, resulting in a single value instead of per-row or per-column std. - Passing integer arrays without specifying
dtype=float, which can cause unexpected integer division in older NumPy versions (rare now).
python
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) # Wrong: sample std but ddof=0 (default) wrong_std = np.std(arr) # Right: sample std with ddof=1 right_std = np.std(arr, ddof=1) print(f"Wrong sample std (ddof=0): {wrong_std}") print(f"Correct sample std (ddof=1): {right_std}")
Output
Wrong sample std (ddof=0): 1.707825127659933
Correct sample std (ddof=1): 1.8257418583505538
Quick Reference
Remember these tips when using numpy.std():
- Use
axisto control the dimension of calculation. - Set
ddof=1for sample standard deviation. - Default
ddof=0calculates population standard deviation. keepdims=Truekeeps the output shape compatible for broadcasting.
Key Takeaways
Use numpy.std() to calculate standard deviation of array elements easily.
Set axis parameter to compute std along rows, columns, or entire array.
Use ddof=1 for sample standard deviation, ddof=0 for population std.
For multi-dimensional arrays, specifying axis avoids confusion.
Keepdims=True helps maintain array shape after reduction.