NumPy均值计算完全指南
目录
1. 基本使用方法
一维数组均值计算
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
mean_value = np.mean(arr)
print(mean_value) # 输出: 3.0
二维数组行列计算
arr_2d = np.array([[1, 2, 3],
[4, 5, 6]])
# 列平均值(垂直方向)
print(np.mean(arr_2d, axis=0)) # [2.5 3.5 4.5]
# 行平均值(水平方向)
print(np.mean(arr_2d, axis=1)) # [2. 5.]
2. 处理NaN值
问题现象
arr = np.array([1, 2, np.nan, 4])
print(np.mean(arr)) # 输出: nan
解决方案
# 方法1:使用nanmean
print(np.nanmean(arr)) # 2.333...
# 方法2:手动过滤
print(np.mean(arr[~np.isnan(arr)])) # 2.333...
3. 高级参数配置
dtype参数
arr_int = np.array([1, 2, 3], dtype=np.int32)
print(np.mean(arr_int, dtype=np.float32)) # 2.0
keepdims参数
arr = np.array([[1, 2],
[3, 4]])
# 保持维度结构
print(np.mean(arr, axis=0, keepdims=True)) # [[2. 3.]]
print(np.mean(arr, axis=0, keepdims=False)) # [2. 3.]
4. 高级参数配置
import pandas as pd
# Series计算
s = pd.Series([1, 2, np.nan, 4])
print(s.mean()) # 2.333...
# DataFrame计算
df = pd.DataFrame({"A": [1, np.nan, 3], "B": [4, 5, 6]})
print(df.mean())
# 输出:
# A 2.0
# B 5.0
5. 函数对比表
函数 | 描述 | NaN处理 | 适用场景 |
---|---|---|---|
np.mean | 标准均值函数 | 不忽略 | 常规数值计算 |
np.nanmean | NaN安全均值 | 自动忽略 | 含缺失值数据 |
pd.Series.mean | Pandas均值 | 自动忽略 | 数据分析 |
pd.DataFrame.mean | 数据框均值 | 自动忽略 | 表格数据处理 |
6. 完整示例代码
import numpy as np
import pandas as pd
# 基础计算示例
data = np.array([10, 20, 30, np.nan])
print(f"标准均值: {np.mean(data)}") # nan
print(f"安全均值: {np.nanmean(data):.2f}") # 20.00
# 多维数组示例
matrix = np.random.rand(3, 4)
print("列均值:", np.mean(matrix, axis=0))
print("行均值:", np.mean(matrix, axis=1))
# Pandas示例
df = pd.DataFrame({"成绩": [85, 90, np.nan, 78],
"年龄": [18, 20, 19, 21]})
print("\nDataFrame均值:")
print(df.mean())
最佳实践建议:
- 处理前先检查数据类型:arr.dtype
- 含NaN时优先使用nanmean
- 大数据集考虑使用dtype=np.float32节省内存
- 保持维度一致性有助于后续矩阵运算