当我们需要在数据处理中了解数据的分布情况时,计算百分位数是一个非常实用的方法。今天,让我们一起深入探讨 NumPy 库中的 numpy.percentile() 函数,看看它是如何帮助我们计算数据的第 q 个百分位数的。
百分位数是一个统计指标,它表示在一个数组中,有多少百分比的观测值会低于某个特定值。让我们通过一个简单的例子来看看它的基本用法。
示例:
import numpy as np
a = np.array([1, 3, 5, 7, 9])
res = np.percentile(a, 50)
print(res)
输出
5.0
语法
> numpy.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation=‘linear‘, keepdims=False, method=‘linear‘)
参数说明:
描述
—
输入数组,或者是可以转换为数组的对象
需要计算的百分位数(范围 0–100)。可以是标量或者类数组对象
沿着哪个轴计算百分位数。默认为 None(将数组展平)
可选的输出数组,用于存放结果
如果为 True,为了节省内存,允许修改输入数组
(已弃用)请改用 method 参数
计算百分位数的方法:‘linear‘(线性)、‘lower‘(取下限)、‘higher‘(取上限)、‘midpoint‘(中点)、‘nearest‘(最近值)
如果为 True,结果中会保留缩减后的轴,且其维度大小为一返回值: 返回数组元素的第 q 个百分位数。如果 q 是一个列表,则会返回多个百分位数。
代码示例
示例 1: 在这个例子中,我们将计算一个一维数组的第 25、50 和 75 百分位数。
import numpy as np
a = np.array([10, 20, 30, 40, 50])
res = np.percentile(a, [25, 50, 75])
print(res)
输出
[20. 30. 40.]
示例 2: 在这里,我们利用 axis 参数来计算一个二维数组中每一行的第 50 百分位数(即中位数)。
import numpy as np
a = np.array([[10, 7, 4], [3, 2, 1]])
res = np.percentile(a, 50, axis=1)
print(res)
输出
[7. 2.]
示例 3: 让我们尝试使用 method=‘lower‘ 选项来计算第 50 百分位数(中位数)。
import numpy as np
a = np.array([1, 2, 3, 4])
res = np.percentile(a, 50, method=‘lower‘)
print(res)
输出
2
示例 4: 最后,我们来看一个二维数组,在计算每一行的第 50 百分位数时,我们设置 keepdims=True 以保留原始的维度信息。
import numpy as np
a = np.array([[10, 20, 30], [40, 50, 60]])
res = np.percentile(a, 50, axis=1, keepdims=True)
print(res)
输出
[[20.]
[50.]]