NumPy nanmean() 函数
NumPy nanmean() 函数计算数组中元素沿指定轴的算术平均值(average),忽略 NaN(非数字)值。平均值等于数据值之和除以有效(非 NaN)数据点的数量。默认情况下,该函数计算展平数组的平均值,如果指定轴,则计算该轴的平均值。
如果指定切片中的所有元素均为 NaN,则该函数返回 NaN 并引发 RuntimeWarning。当数组包含整数时,该函数会在执行计算之前将这些整数转换为 64 位浮点格式 (float64)。这确保了平均值计算的更高精度。计算后,即使原始数组由整数组成,返回的结果也为 float64 格式。
在统计学中,平均值(也称为平均数)是有效数据值的总和除以有效数据点的数量。公式为平均值 = (所有有效元素的总和) / (有效元素的数量)。
对于一维数组,平均值是对所有非 NaN 元素计算的。对于多维数组,平均值沿指定轴计算,同时忽略 NaN 值。
语法
以下是 NumPy nanmean() 函数的语法 -
numpy.nanmean(a, axis=None, dtype=None, out=None, keepdims=<no value>,where=<no value>)
参数
以下是 NumPy nanmean() 函数的参数 -
- a:输入数组,可以是 NumPy 数组、列表或标量值。 NaN 值将被忽略。
- axis(可选):计算平均值的轴。默认值为 None,表示将计算整个数组的平均值。
- dtype(可选):用于计算平均值的数据类型。默认值为 None,表示使用输入数组的数据类型。
- out(可选):存储结果的位置。如果提供,则必须与预期输出的形状相同。
- keepdims(可选):如果为 True,则缩小的维度在输出中保留为大小为 1 的维度。默认值为 False。
- where(可选):一个布尔数组,指定要包含在计算中的元素。
返回值
此函数返回输入数组的平均值,忽略 NaN 值。如果指定了 axis 参数,则沿该轴计算平均值。对于一维输入,结果为标量;对于多维输入,结果为数组。
示例
以下是使用 NumPy nanmean() 函数计算数组平均值并忽略 NaN 值的基本示例 -
import numpy as np # 输入包含 NaN 值的数组 x = np.array([1, 2, np.nan, 4, 5]) # 应用 nanmean result = np.nanmean(x) print("平均结果(忽略 NaN):", result)
输出
以下是上述代码的输出 -
平均结果(忽略NaN):3.0
示例:指定轴
nanmean() 函数可以计算多维数组沿特定轴的平均值,忽略 NaN 值。在以下示例中,我们计算二维数组沿轴 0(列)和轴 1(行)的平均值 -
import numpy as np # 包含 NaN 值的二维数组 x = np.array([[1, 2, np.nan], [4, np.nan, 6], [7, 8, 9]]) # 沿轴 0(列)应用 nanmean result_axis0 = np.nanmean(x, axis=0) # 沿轴 1(行)应用 nanmean result_axis1 = np.nanmean(x, axis=1) print("沿轴 0 的平均值(忽略 NaN):", result_axis0) print("沿轴 1 的平均值(忽略 NaN):", result_axis1)
输出
以下是上述代码的输出 -
沿轴 0 的平均值(忽略 NaN):[4. 5. 7.5] 沿轴 1 的平均值(忽略 NaN):[1.5 5. 8. ]
示例:'keepdims' 参数的用法
keepdims 参数允许结果保留缩小后的尺寸,即尺寸 1。这对于将结果广播回原始形状非常有用。在以下示例中,我们沿轴 0 计算平均值并保留缩减后的维度 -
import numpy as np # 包含 NaN 值的二维数组 x = np.array([[1, 2, np.nan], [4, np.nan, 6], [7, 8, 9]]) result = np.nanmean(x, axis=0, keepdims=True) print("keepdims=True 时的平均值(忽略 NaN):", result)
输出
以下是上述代码的输出 -
keepdims=True 时的平均值(忽略 NaN):[[4. 5. 7.5]]
示例:绘制 'nanmean()' 函数
在以下示例中,我们绘制了 nanmean() 函数的行为,使用 numpy 和 matplotlib.pyplot 计算并可视化了包含一些 NaN 值的不同输入数组的平均值 -
import numpy as np import matplotlib.pyplot as plt # 输入包含一些 NaN 值的数组 x = np.linspace(0, 10, 100) y = np.full_like(x, np.nanmean(x)) plt.plot(x, y, label="平均值(忽略 NaN)") plt.title("Nanmean函数") plt.xlabel("输入") plt.ylabel("平均值") plt.legend() plt.grid() plt.show()
输出
该图展示了平均值在输入范围内的恒定性,同时忽略了 NaN 值 -

numpy_statistical_functions.html