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