NumPy quantum() 函数
NumPy quantile() 函数计算数据沿指定轴的第 q 个分位数(或百分位数)。分位数是指低于该值的部分观测值所占百分比。例如,0.5 分位数(第 50 个百分位数)是数据的中位数,而 0.25 分位数(第 25 个百分位数)是第一个四分位数,0.75 分位数(第 75 个百分位数)是第三个四分位数。
语法
以下是 NumPy quantile() 函数的语法 -
numpy.quantile(a, q, axis=None, out=None, overwrite_input=False, method='linear', keepdims=False, weights=None, interpolation=None)
参数
以下是 NumPy quantile() 函数的参数 -
- a:输入数组,可以是 NumPy 数组、列表或标量值。
- q:要计算的分位数,可以是单个数字,也可以是数字列表/数组。它应在 [0, 1] 范围内(例如,0.25 表示第 25 个百分位数,0.5 表示中位数)。
- axis(可选):计算分位数的轴。默认值为 None,表示将在整个数组上计算分位数。
- out(可选):存储结果的位置。如果提供,则必须与预期输出具有相同的形状。
- overwrite_input(可选):如果为 True,则将就地修改输入数组。默认值为 False。
- weights:如果 weights=None,则假定 a 中的所有数据的权重都等于 1。只有 method=inverted_cdf 支持权重。
- keepdims(可选):如果为 True,则缩小的维度在输出中保留为大小为 1 的维度。默认值为 False。
- interpolation(可选):method 关键字参数的弃用名称。
- method(可选):当所需分位数位于两个数据点之间时使用的插值方法。它可以是以下之一:
- linear(默认):在两个最近的数据点之间执行线性插值。
- lower:返回两个数据点中较低的一个。
- higher:返回两个数据点中较高的一个。
- midpoint:返回两个数据点的中点。
- nearest:返回最近的数据点。
返回值
此函数返回输入数组沿指定轴的第 q 个分位数。根据输入和 q 参数的值,结果是标量还是数组。
示例
以下是使用 NumPy quantile() 函数计算数组第 50 个百分位数(中位数)的基本示例 -
import numpy as np # 输入数组 x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) # 应用分位数 result = np.quantile(x, 0.5) # 第 50 个百分位数(中位数) print("分位数结果(第 50 个百分位数):", result)
输出
以下是上述代码的输出−
分位数结果(第 50 个百分位数):5.0
示例:指定不同的分位数
quantile() 函数还可以计算其他分位数,例如第 25 个或第 75 个百分位数。在以下示例中,我们计算了第 25 个和第 75 个百分位数 −
import numpy as np # 输入数组 x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) # 对 25 和 75 百分位数应用分位数 result = np.quantile(x, [0.25, 0.75]) print("分位数结果(25 和 75 百分位数):", result)
输出
以下是上述代码的输出 -
分位数结果(25 和 75 百分位数):[3. 7.]
示例:多维数组
quantile() 函数用于对多维数组进行操作。在以下示例中,我们创建了一个二维 NumPy 数组,并计算了沿特定轴的第 50 个百分位数(中位数)-
import numpy as np # 二维数组 x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 沿轴 0(列)应用分位数 result = np.quantile(x, 0.5, axis=0) print("沿轴 0(中位数)的分位数结果:", result)
输出
以下是上述代码的输出 -
沿轴 0(中位数)的分位数结果:[4. 5. 6.]
示例:使用不同的插值方法
在下面的示例中,我们使用了不同的插值方法来计算数组的第 50 个百分位数。我们已经演示了线性、较低、较高和中点方法 -
import numpy as np # 输入数组 x = np.array([1, 3, 5, 7, 9]) # 使用不同方法应用分位数 result_linear = np.quantile(x, 0.5, method='linear') result_lower = np.quantile(x, 0.5, method='lower') result_higher = np.quantile(x, 0.5, method='higher') result_midpoint = np.quantile(x, 0.5, method='midpoint') print("线性方法:", result_linear) print("较低方法:", result_lower) print("更高方法:", result_higher) print("中点方法:", result_midpoint)
输出
以下是上述代码的输出 -
线性方法:5.0 更低方法:3.0 更高方法:7.0 中点方法:5.0
示例:绘制"quantile()"函数
在下面的示例中,我们绘制了分位数函数针对一系列输入值的行为。我们计算并绘制了 25%、50% 和 75% 的百分位数 -
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 1, 100) # 输入范围 y_25 = np.quantile(x, 0.25) y_50 = np.quantile(x, 0.5) y_75 = np.quantile(x, 0.75) plt.plot(x, np.full_like(x, y_25), label="25% 百分位数") plt.plot(x, np.full_like(x, y_50), label="50% 百分位数") plt.plot(x, np.full_like(x, y_75),label="75%" plt.title("分位数函数") plt.xlabel("输入") plt.ylabel("分位数") plt.legend() plt.grid() plt.show()
输出
该图展示了每个分位数(25%、50%、75%)的常数性质,因为每个分位数的输入值保持不变 -

numpy_statistical_functions.html