NumPy nanquantile() 函数
NumPy nanquantile() 函数计算数据沿指定轴的第 q 个分位数(或百分位数),忽略 NaN(非数字)值。如果指定了多个概率级别,则结果的第一个轴对应于分位数。
其他轴是输入数据约简后剩余的轴。如果输入数据包含小于 float64 的整数或浮点数,则输出数据类型为 float64。否则,输出数据类型与输入相同。如果指定了 out,则返回该数组。
在 NumPy 中,quantile() 和 nanquantile() 函数允许计算第 q 个分位数。唯一的区别在于,nanquantile() 函数会将 NaN 值排除在计算之外,而 quantile() 函数则会将其纳入计算。
语法
以下是 NumPy nanquantile() 函数的语法 -
numpy.nanquantile(a, q, axis=None, out=None, overwrite_input=False, method='linear', keepdims=False)
参数
以下是 NumPy nanquantile() 函数的参数 -
- a:输入数组,可以是 NumPy 数组、列表或标量值。输入数据可能包含 NaN 值。
- q:要计算的分位数,可以是单个数字,也可以是数字列表/数组。它应在 [0, 1] 范围内(例如,0.25 表示第 25 个百分位数,0.5 表示中位数)。
- axis(可选):计算分位数的轴。默认值为 None,表示将在整个数组上计算分位数。
- out(可选):存储结果的位置。如果提供,则必须与预期输出具有相同的形状。
- overwrite_input(可选):如果为 True,则将就地修改输入数组。默认值为 False。
- keepdims(可选):如果为 True,则缩减后的维度在输出中保留为 1 的维度。默认值为 False。
- method(可选):当所需分位数位于两个数据点之间时使用的插值方法。它可以是以下之一 -
- linear(默认):在两个最近的数据点之间执行线性插值。
- lower:返回两个数据点中较低的一个。
- higher:返回两个数据点中较高的一个。
- midpoint:返回两个数据点的中点。
- nearest:返回最近的数据点。
返回值
此函数返回输入数组沿指定轴的第 q 个分位数,忽略 NaN 值。根据输入和 q 参数的值,结果是标量还是数组。
示例
以下是使用 NumPy nanquantile() 函数计算数组第 50 个百分位数(中位数)的基本示例 -
import numpy as np # 输入包含 NaN 值的数组 x = np.array([1, 2, 3, 4, np.nan, 6, 7, 8, 9]) # 应用 nanquantile result = np.nanquantile(x, 0.5) # 第 50 个百分位数(中位数) print("NanQuantile 结果(第 50 个百分位数):", result)
输出
以下是上述代码的输出 -
NanQuantile 结果(第 50 个百分位数):5.0
示例:多维数组
nanquantile() 函数对多维数组进行运算,同时忽略 NaN 值。在以下示例中,我们创建了一个二维 NumPy 数组,并计算了沿特定轴的第 50 个百分位数(中位数)-
import numpy as np # 包含 NaN 值的二维数组 x = np.array([[1, 2, 3], [4, 5, np.nan], [7, 8, 9]]) # 沿轴 0(列)应用 NanQuantile result = np.nanquantile(x, 0.5, axis=0) print("沿轴 0(中位数)的 NanQuantile 结果:", result)
输出
以下是上述代码的输出 −
沿轴 0(中位数)的 NanQuantile 结果:[4. 5. 6.]
示例:使用不同的插值方法
在下面的示例中,我们使用了不同的插值方法计算数组的第 50 个百分位数,忽略了 NaN 值。我们已经演示了线性、较低、较高和中点方法 -
import numpy as np # 输入包含 NaN 值的数组 x = np.array([1, 3, 5, np.nan, 9]) # 使用不同的方法应用 nanquantile result_linear = np.nanquantile(x, 0.5, method='linear') result_lower = np.nanquantile(x, 0.5, method='lower') result_higher = np.nanquantile(x, 0.5, method='higher') result_midpoint = np.nanquantile(x, 0.5, method='midpoint') print("线性方法:", result_linear) print("Lower Method:", result_lower) print("Higher Method:", result_higher) print("Midpoint Method:", result_midpoint)
输出
以下是上述代码的输出 -
线性方法:5.0 Lower Method:3.0 Higher Method:7.0 Midpoint Method:5.0
示例:绘制 'nanquantile()' 函数
在下面的示例中,我们绘制了 nanquantile 函数在一系列输入值下的行为,忽略了 NaN 值。我们计算并绘制了 25%、50% 和 75% 的百分位数 -
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 1, 100) # 输入范围 y_25 = np.nanquantile(x, 0.25) y_50 = np.nanquantile(x, 0.5) y_75 = np.nanquantile(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("NanQuantile 函数") plt.xlabel("输入") plt.ylabel("分位数") plt.legend() plt.grid() plt.show()
输出
该图展示了每个分位数(25%、50%、75% 的分位数)的恒定性,因为每个分位数的输入值保持不变 -

numpy_statistical_functions.html