NumPy nanvar() 函数
NumPy nanvar() 函数计算数组元素沿指定轴的方差,忽略 NaN
值。此函数测量分布的散布度或离散度,同时将 NaN
值排除在计算之外。默认情况下,方差是针对扁平化数组计算的,但也可以沿特定轴计算。
在统计学中,方差 是衡量数据集散布度的指标。其公式为 var = sum((x_i - mean)^2) / N,其中 x_i 表示每个数据点,mean 表示数据的平均值,N 表示数据点的数量。对于 nanvar() 函数,计算时会忽略 NaN
值。
对于一维数组,方差是针对除 NaN
之外的所有元素计算的。对于多维数组,方差沿指定轴计算,同时忽略 NaN
值。
语法
以下是 NumPy nanvar() 函数的语法 -
numpy.nanvar(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>, where=<no value>, mean=<no value>, Correction=<no value>)
参数
以下是 NumPy nanvar() 函数的参数 -
- a:输入可转换为数组的数组或对象。它可以是 NumPy 数组、列表或标量值。
- axis(可选):计算方差的一个或多个轴。默认值为 None,表示方差将在整个数组上计算。
- dtype(可选):用于计算方差的数据类型。如果为 None,则从输入数组推断得出。
- out(可选):存储结果的位置。如果提供,则必须与预期输出具有相同的形状。
- ddof(可选):自由度增量。计算中使用的除数为 N - ddof,其中 N 是元素的数量(不包括
NaN
)。默认值为 0。 - keepdims(可选):如果为 True,则缩小后的维度在输出中保留为 1 的尺寸。默认值为 False。
- where(可选):一个布尔数组,指定要包含在计算中的元素。
- mean(可选):提供平均值以防止重复计算。平均值的形状应与使用 keepdims=True 计算的结果一致。
- correction(可选):控制方差的计算,并提供修改自由度等选项。
返回值
此函数返回输入数组的方差,忽略 NaN
值。如果输入是一维的,则结果为标量;如果输入是多维的,则结果为数组。
示例
以下是使用 NumPy nanvar() 函数计算数组方差的基本示例 -
import numpy as np # 输入包含 NaN 值的数组 x = np.array([1, 2, np.nan, 4, 5]) # 应用 nanvar result = np.nanvar(x) print("方差结果(忽略 NaN):", result)
输出
以下是上述代码的输出 -
方差结果(忽略NaN):2.5
示例:指定轴
nanvar() 函数可以计算多维数组沿特定轴的方差,同时忽略 NaN
值。在以下示例中,我们计算了二维数组沿轴 0(列)和轴 1(行)的方差 -
import numpy as np # 包含 NaN 值的二维数组 x = np.array([[1, 2, np.nan], [4, np.nan, 6], [7, 8, 9]]) # 沿轴 0(列)应用 nanvar result_axis0 = np.nanvar(x, axis=0) # 沿轴 1(行)应用 nanvar result_axis1 = np.nanvar(x, axis=1) print("沿轴 0 的方差(忽略 NaN):", result_axis0) print("沿轴 1 的方差(忽略 NaN):", result_axis1)
输出
以下是上述代码的输出 -
沿轴 0 的方差(忽略 NaN):[6. 9. 2.25] 沿轴 1 的方差(忽略 NaN):[0.25 1. 0.66666667]
示例:'ddof' 参数的使用
ddof(自由度增量) 参数用于调整方差计算中使用的除数。默认情况下,ddof=0,但可以将其设置为其他值以自定义计算。在以下示例中,我们计算了 ddof=1 时的方差 -
import numpy as np # 输入包含 NaN 值的数组 x = np.array([1, 2, np.nan, 4, 5]) # 应用 ddof=1 时的 nanvar result = np.nanvar(x, ddof=1) print("ddof=1 时的方差(忽略 NaN):", result)
输出
以下是上述代码的输出 -
ddof=1 时的方差(忽略 NaN):3.3333333333333335
示例:绘制"nanvar()"函数
在下面的示例中,我们绘制了nanvar()函数的行为。我们计算并绘制不同大小输入数组的方差,同时忽略 NaN
值 -
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 10, 100) x[::10] = np.nan # 引入 NaN 值 # 计算忽略 NaN 的方差 y = np.nanvar(x) plt.plot(x, np.full_like(x, y, dtype=np.float64), label="方差(忽略 NaN)" plt.title("方差函数(忽略 NaN)") plt.xlabel("输入") plt.ylabel("方差值") plt.legend() plt.grid() plt.show()
输出
该图显示了输入范围内的方差值,忽略了 NaN
值 −

numpy_statistical_functions.html