NumPy - 平均值
什么是平均值?
在数学中,平均值是一组数字的平均值。最常见的类型是算术平均值,即数字之和除以数字的数量。
其他类型包括几何平均值(数字乘积的 n 次方根)和调和平均值(数值的数量除以倒数之和)。
这些不同的平均值是根据数据的性质和分析的具体需求而使用的。
NumPy mean() 函数
NumPy 中的 mean() 函数计算数组中元素的算术平均值(平均值)。默认情况下,它会计算所有元素的平均值,但您可以指定一个轴来计算沿行或列的平均值。
它还可以处理不同的数据类型,并允许您定义输出类型。例如,np.mean([1, 2, 3, 4]) 返回 2.5。
以下是 NumPy 中 mean() 函数的基本语法 -
numpy.mean(a, axis=None, dtype=None, out=None, keepdims=False)
其中:
- a: 包含要计算平均值的元素的输入数组。
- axis: 计算平均值的轴。如果为 None,则计算数组中所有元素的平均值。对于多维数组,您可以指定一个轴(0 表示行,1 表示列,等等)。
- dtype: 用于计算平均值的数据类型。如果未指定,则默认为输入数组的数据类型。
- out: 存储结果的位置。如果提供,则必须与预期输出的形状和类型相同。
- keepdims: 如果为 True,则缩小的轴将保留在结果中,作为大小为 1 的维度。这对于广播很有用。
计算一维数组的平均值
如果您有一个一维数组,您可以使用 numpy.mean() 函数计算其元素的平均值。以下是示例 -
import numpy as np # 定义一个一维数组 arr = np.array([1, 2, 3, 4, 5]) # 计算所有元素的平均值 mean_value = np.mean(arr) print("数组平均值:", mean_value)
以下是得到的输出 -
数组平均值:3.0
二维数组中沿特定轴的平均值
在二维数组中,可以计算沿特定轴的平均值。例如,计算沿行或列的平均值 -
import numpy as np # 定义一个二维数组 arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 沿行计算平均值 (axis=1) mean_rows = np.mean(arr_2d, axis=1) # 沿列计算平均值 (axis=0) mean_columns = np.mean(arr_2d, axis=0) print("沿行计算平均值:", mean_rows) print("沿列计算平均值:", mean_columns)
以下是得到的输出 -
沿行计算平均值:[2. 5. 8.] 沿列计算平均值:[4. 5. 6.]
使用指定数据类型计算平均值
您还可以指定要计算平均值的数据类型。这在处理大数或需要特定精度的结果(例如 float64)时尤其有用。以下是示例 -
import numpy as np # 定义一个整数数组 arr_int = np.array([10, 20, 30]) # 使用指定数据类型 (float64) 计算平均值 mean_float = np.mean(arr_int, dtype=np.float64) print("float64 数据类型的平均值:", mean_float)
以下是得到的输出 -
float64 数据类型的平均值: 20.0
使用 Keepdims 参数计算平均值
keepdims 参数有助于在均值运算后保留原始数组的维数。如果设置为 True,结果将与输入数组具有相同的维数,但缩减后的轴的大小为 1。
import numpy as np # 定义一个二维数组 arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 沿列求均值,同时保持维度不变 mean_keepdims = np.mean(arr_2d, axis=0, keepdims=True) print("keepdims=True 时的均值:", mean_keepdims)
以下是得到的输出 −
keepdims=True 时的均值: [[4. 5. 6.]]
NumPy 均值的应用
numpy.mean() 函数在科学计算、数据分析和机器学习领域有着广泛的应用。一些常见的用例如下:
- 计算数据集中的平均值:平均值为数据集提供了一个中心值,这在统计和数据分析中对于理解数据分布至关重要。
- 特征缩放:在机器学习中,计算特征的平均值有助于规范化和标准化,确保每个特征对模型的贡献相同。
- 财务分析:计算财务数据(例如股票价格或销售数据)的平均值有助于识别趋势并做出明智的决策。
- 科学测量:平均值在科学研究中用于汇总实验数据,提供集中趋势的度量。
优化平均值计算
NumPy 针对快速数组操作进行了优化,并且 numpy.mean() 函数非常高效。不过,有几种方法可以进一步优化平均值计算 −
- 使用 out 参数: 如果要将平均值结果存储在预先存在的数组中,可以使用 out 参数,这样可以避免创建新数组并节省内存。
- 明智地使用 axis: 仅在必要时指定轴。默认情况下,计算整个数组的平均值是最快的操作,但根据数据的不同,沿特定轴计算平均值可能会更慢。