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. interpolation
link | 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