NumPy | quantile method
Start your free 7-days trial now!
Numpy's quantile(~)
method returns the interpolated value at the specified quantile. Note that this method is exactly the same as the percentile(~)
, just that the quantile(~)
method takes a value between 0 and 1 - not 0 and 100.
Parameters
1. a
| array-like
The input array.
2. q
| array-like
of float
The desired quantile to compute, which must be between 0 (inclusive) and 1 (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 quantile column-wise |
1 | Compute the quantile 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 0.5 quantile:
a = np.array([5,6,7,8,9])np.quantile(a, 0.5)
7.0
Computing multiple percentiles
To get the values at the 50th and 75th percentiles:
a = np.array([5,6,7,8,9])np.quantile(a, [0.5, 0.75])
array([7., 8.])
Changing interpolation methods
linear
Consider the case when the value corresponding to the specified quantile does not exist:
a = np.array([5,6,7,8,9])np.quantile(a, 0.45) # interpolation="linear"
6.800000000000001
Here, since the value corresponding to the 45th percentile does not exist in the array, the value was linearly interpolated between 6 and 7.
lower
a = np.array([5,6,7,8,9])np.quantile(a, 0.45, interpolation="lower")
6
Again, since the 45% quantile does not exist, we need to perform interpolation. We know it is between the values 6 and 7. By passing in "lower"
, we select the lower value, that is, 6 in this case.
higher
a = np.array([5,6,7,8,9])np.quantile(a, 0.45, interpolation="higher")
7
Same logic as "lower"
, but we take the upper value.
nearest
a = np.array([5,6,7,8,9])np.quantile(a, 0.45, interpolation="nearest")
7
By passing in "nearest", instead of always selecting the lower or upper value, we take whichever is nearest. 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.quantile(a, 0.45, interpolation="midpoint")
6.5
Here, we just take the midpoint of the lower and upper value, so (6+7)/2=6.5
.