NumPy - percentile() function
The NumPy percentile() function returns the q-th percentile of the array elements or q-th percentile the data along the specified axis.
Syntax
numpy.percentile(a, q, axis=None, out=None, interpolation='linear', keepdims=False)
Parameters
a |
Required. Specify the input array (array_like). |
q |
Required. Specify percentile or sequence of percentiles to compute, which must be between 0 and 100 inclusive (array_like of float). |
axis |
Optional. Specify axis or axes along which to operate. The default, axis=None, operation is performed on flattened array. |
out |
Optional. Specify the output array in which to place the result. It must have the same shape as the expected output. |
interpolation |
Optional. Specify the interpolation method to use when the desired percentile lies between two data points. It can take value from {'linear', 'lower', 'higher', 'midpoint', 'nearest'} |
keepdims |
Optional. If this is set to True, the reduced axes are left in the result as dimensions with size one. With this option, the result will broadcast correctly against the input array. |
Return Value
Returns percentile points of a. If q is a single percentile and axis=None, then the result is a scalar. In other cases, the result is an array.
Example: percentile() of flattened array
In the example below, percentile() function is used to return the maximum of all values present in the array.
import numpy as np Arr = np.array([[10,20, 30],[40, 50, 60]]) print("Array is:") print(Arr) print() #calculating 50th percentile point print("50th percentile:", np.percentile(Arr, 50)) print() #calculating (25, 50, 75) percentile points print("[25, 50, 75] percentile:\n", np.percentile(Arr, (25, 50, 75)))
The output of the above code will be:
Array is: [[10 20 30] [40 50 60]] 50th percentile: 35.0 [25, 50, 75] percentile: [22.5 35. 47.5]
Example: using axis parameter
When axis parameter is provided, the percentile points are calculated over the specified axes. Consider the following example.
import numpy as np Arr = np.array([[10,20, 30],[40, 50, 60]]) print("Array is:") print(Arr) print() #calculating 50th percentile point along axis=0 print("50th percentile (axis=0):", np.percentile(Arr, 50, axis=0)) #calculating 50th percentile point along axis=1 print("50th percentile (axis=1):", np.percentile(Arr, 50, axis=1))
The output of the above code will be:
Array is: [[10 20 30] [40 50 60]] 50th percentile (axis=0): [25. 35. 45.] 50th percentile (axis=1): [20. 50.]
Example: using interpolation parameter
The interpolation parameter can be used to specify the interpolation method to be used while calculating percentile points. Consider the example below:
import numpy as np Arr = np.array([[10,20, 30],[40, 50, 60]]) print("Array is:") print(Arr) print() #calculating 50th percentile point print("50th percentile:", np.percentile(Arr, 50, interpolation='lower')) print() #calculating (25, 50, 75) percentile points print("[25, 50, 75] percentile:\n", np.percentile(Arr, (25, 50, 75), interpolation='lower'))
The output of the above code will be:
Array is: [[10 20 30] [40 50 60]] 50th percentile: 30 [25, 50, 75] percentile: [20 30 40]
Example: visualize interpolation method
The different types of interpolation can be visualized graphically:
import numpy as np import matplotlib.pyplot as plt x = [0, 1, 2, 3] p = np.linspace(0, 100, 5000) fig, ax = plt.subplots() lines = [ ('linear', None), ('higher', '--'), ('lower', '--'), ('nearest', '-.'), ('midpoint', '-.'), ] for method, style in lines: ax.plot(p, np.percentile(x, p, interpolation=method), label=method, linestyle=style) ax.set(title='Interpolation methods for list: ' + str(x), xlabel='Percentile', ylabel='List item returned', yticks=x) ax.legend() plt.show()
The output of the above code will be:
❮ NumPy - Functions