NumPy | percentile method
Start your free 7-days trial now!
Numpy's percentile(~) method returns the interpolated value at the specified percentile.
Parameters
1. a | array-like
The input array.
2. q | array-like of float
The desired percentile to compute, which must be between 0 (inclusive) and 100 (inclusive).
3. axis | None or int | optional
The axis along which to compute the percentile. For 2D arrays, the allowed values are as follows:
Axis | Meaning |
|---|---|
0 | Compute the percentile column-wise |
1 | Compute the percentile row-wise |
None | Compute the percentile on a flattened input array. |
By default, axis=None.
4. out | Numpy array | optional
Instead of creating a new array, you can place the computed result into the array specified by out.
5. overwrite_input | boolean | optional
Whether to save intermediate calculations to the input array a. This would save memory space, but would also make the content of a undefined. By default, overwrite_input=False.
6. interpolationlink | string | optional
How the values are interpolated when the given percentile sits between two data-points, say i and j where i<j:
Value | Meaning |
|---|---|
linear | Standard linear interpolation |
lower | Returns |
higher | Return |
midpoint | Returns |
nearest | Returns |
By default, interpolation="linear".
Return value
If q is a scalar, then a scalar is returned. Otherwise, a Numpy array is returned.
Examples
Computing a single percentile
To get the value at the 50th percentile:
a = np.array([5,6,7,8,9])np.percentile(a, 50)
7.0
Computing multiple percentiles
To get the values at the 50th and 75th percentile:
a = np.array([5,6,7,8,9])np.percentile(a, [50, 75])
array([7., 8.])
Changing interpolation methods
linear
Consider the case the value does not exist:
a = np.array([5,6,7,8,9])np.percentile(a, 45)
6.800000000000001
Here, since the value corresponding to the 45th percentile does not exist in the array, the value was linearly interpolated (i.e. by default, interpolation="linear").
lower
a = np.array([5,6,7,8,9])np.percentile(a, 45, interpolation="lower")
6
higher
a = np.array([5,6,7,8,9])np.percentile(a, 45, interpolation="higher")
7
nearest
a = np.array([5,6,7,8,9])np.percentile(a, 45, interpolation="nearest")
7
Here, judging from the output from when interpolation="linear", we know that the interpolated value is closer to 7 rather than 6.
midpoint
a = np.array([5,6,7,8,9])np.percentile(a, 45, interpolation="midpoint")
6.5