在数据分析与科学计算中除了对数组元素进行逐元素运算之外还经常需要对整组数据进行统计汇总例如计算总和、平均值、最大值或标准差等。这类运算通常称为聚合运算Aggregation或归约运算Reduction即将一组元素归约为一个统计结果。NumPy 提供了一组用于对数组元素进行统计汇总的函数。这些函数可以对整个数组进行聚合计算也可以通过 axis 参数沿指定轴进行统计从而实现按行或按列计算。按照功能划分NumPy 中常见的归约运算函数通常可以分为以下几类1基本统计量2极值运算3位置索引函数4累计运算5离散程度函数6顺序统计函数7逻辑归约运算8NaN 安全归约函数需要说明的是对于许多归约运算除了函数形式np.sum(a)也可以写成数组方法形式a.sum()两种写法在大多数情况下等价。为了保持本手册结构统一本文主要采用 NumPy 函数形式np.function进行说明。一、基本统计量sum()计算数组元素之和Summation。numpy.sum(a, axisNone, dtypeNone, outNone, keepdimsFalse)参数说明• a输入数组• axis计算轴• dtype计算使用的数据类型• out结果输出数组• keepdims是否保留被计算的维度示例np.sum([1,2,3,4])# 10prod()计算数组元素的乘积Product。numpy.prod(a, axisNone, dtypeNone, outNone, keepdimsFalse)示例np.prod([1,2,3,4])# 24mean()计算数组元素的平均值算术平均数Arithmetic Mean。numpy.mean(a, axisNone, dtypeNone, outNone, keepdimsFalse)参数说明• a输入数组• axis计算轴默认对整个数组计算• dtype计算使用的数据类型• out结果输出数组• keepdims是否保留被计算的维度示例 1a np.array([1,2,3,4])np.mean(a)# 2.5示例 2按列计算平均值a np.array([[1,2,3], [4,5,6]]) np.mean(a, axis0)# [2.5 3.5 4.5]示例 3保留维度np.mean(a, axis0, keepdimsTrue)# [[2.5 3.5 4.5]]average()计算数组元素的加权平均值Weighted Average。numpy.average(a, axisNone, weightsNone)参数说明• a输入数组• axis可选指定聚合轴• weights可选权重数组示例scores np.array([80, 90, 100])weights np.array([0.2, 0.3, 0.5]) np.average(scores, weightsweights)# 92.0说明average() 与 mean() 的区别在于支持权重计算。count_nonzero()统计非零元素数量Count Non-Zero Elements。numpy.count_nonzero(a, axisNone, keepdimsFalse)参数说明• a输入数组• axis计算轴• keepdims是否保留被计算的维度示例a np.array([0,1,2,0,3]) np.count_nonzero(a)# 3提示若需要统计数组的元素总数可以使用 a.size 或 np.size(a)若使用 len(a)则只返回数组第一维的长度而不是元素总数。二、极值运算max()返回数组元素中的最大值Maximum。numpy.max(a, axisNone, outNone, keepdimsFalse)参数说明• a输入数组• axis计算轴• out结果输出数组• keepdims是否保留被计算的维度示例a np.array([3,7,2,9]) np.max(a)# 9min()返回数组元素中的最小值Minimum。numpy.min(a, axisNone, outNone, keepdimsFalse)示例np.min(a)# 2ptp()计算数组元素的极差Peak To Peak。极差表示数组中的最大值与最小值之差。numpy.ptp(a, axisNone, outNone, keepdimsFalse)参数说明• a输入数组• axis计算轴示例np.ptp([3,7,2,9])# 7三、位置索引函数有时不仅需要获得极值本身还需要确定该值在数组中的位置。argmax()返回最大值所在的索引。numpy.argmax(a, axisNone)示例a np.array([1,7,3,5])np.argmax(a)# 1说明返回最大值第一次出现的位置。argmin()返回最小值所在的索引。numpy.argmin(a, axisNone)示例np.argmin([3,1,5])# 1四、累计运算累计运算用于计算数组元素的前缀统计结果即每一步都包含前面所有元素的累计值。cumsum()计算累计和Cumulative Sum。numpy.cumsum(a, axisNone, dtypeNone, outNone)参数说明• a输入数组• axis计算轴• dtype计算使用的数据类型• out结果输出数组示例np.cumsum([1,2,3,4])# [ 1 3 6 10]cumprod()计算累计乘积Cumulative Product返回每一步相乘结果。numpy.cumprod(a, axisNone, dtypeNone, outNone)示例np.cumprod([1,2,3,4])# [ 1 2 6 24]五、离散程度函数这些函数用于描述数据的离散程度或分布特征。std()计算标准差Standard Deviation。numpy.std(a, axisNone, dtypeNone, outNone, ddof0, keepdimsFalse)参数说明• a输入数组• axis计算轴• ddof自由度修正Delta Degrees of Freedom默认值 0ddof 0总体标准差ddof 1样本标准差在数据分析、机器学习中如果数据来自样本数据集通常使用 ddof1。示例a np.array([1,2,3,4]) np.std(a, ddof1)# 1.2909944487358056var()计算方差Variance。numpy.var(a, axisNone, dtypeNone, outNone, ddof0, keepdimsFalse)参数说明• a输入数组• axis计算轴• ddof自由度修正示例a np.array([1,2,3,4])np.var(a) # ddof0总体方差# 1.25 np.var(a, ddof1) # 样本方差# 1.6666666666666667六、顺序统计函数median()计算数组元素的中位数Median。中位数是将数据按大小排序后位于中间位置的数值用于描述数据的中心位置对极端值不敏感。numpy.median(a, axisNone, outNone, overwrite_inputFalse, keepdimsFalse)参数说明• a输入数组• axis计算轴• out结果输出数组• keepdims是否保留被计算的维度示例a np.array([1,3,5,7,9])np.median(a)# 5说明当数组元素个数为偶数时中位数为中间两个数的平均值。percentile()计算数组的百分位数Percentile。百分位数表示在排序后的数据中有 q% 的数据小于或等于该值。numpy.percentile(a, q, axisNone)参数说明• a输入数组• q百分位0–100• axis计算轴示例a np.array([1,2,3,4,5]) np.percentile(a, 50)# 3说明50% 百分位数即中位数。quantile()计算数组的分位数Quantile。分位数与百分位数本质相同只是表示方式不同percentile() 使用 0–100 的百分比表示而 quantile() 使用 0–1 的比例表示。numpy.quantile(a, q, axisNone)参数说明• a输入数组• q分位数0–1• axis计算轴示例np.quantile(a, 0.5) # 等价于 percentile(a, 50)# 3说明percentile() 和 quantile() 函数还支持 method 参数用于指定分位数/百分位数的计算方法NumPy 2.0 起还支持加权分位数。七、逻辑归约运算NumPy 还提供用于布尔数组统计的函数。any()判断数组中是否存在 True。numpy.any(a)示例np.any([False, False, True])# Trueall()判断数组元素是否全部为 True。numpy.all(a)示例np.all([True, True, False])# False说明这两个函数在条件筛选与逻辑判断中非常常见。八、NaN 安全归约函数在真实数据中经常会出现缺失值NaN。普通聚合函数在参与计算的元素包含 NaN 时通常会使结果变为 NaN。NumPy 提供了一组忽略 NaN 的统计函数。常见函数包括np.nansum()np.nanmean()np.nanmax()np.nanmin()np.nanstd()np.nanvar()np.nanmedian()np.nanpercentile()np.nanquantile()np.nancumsum()np.nancumprod()示例a np.array([1,2,np.nan,4]) np.mean(a)# nan np.nanmean(a)# 2.333333...说明nanmean() 在计算平均值时忽略 NaN 元素。 小结NumPy 提供了一套用于数组统计汇总的归约运算函数包括基本统计量sum、prod、mean、average、极值运算max、min、ptp、位置索引函数argmax、argmin、累计运算cumsum、cumprod、离散程度函数std、var以及顺序统计函数median、percentile、quantile。此外NumPy 还提供逻辑归约函数any、all以及忽略缺失值的 NaN 安全函数nanmean、nanmax、nansum 等。这些函数均支持 axis 参数可按行或按列进行统计是数据分析、科学计算与机器学习中的基础工具。“点赞有美意赞赏是鼓励”
NumPy 函数手册:归约运算
在数据分析与科学计算中除了对数组元素进行逐元素运算之外还经常需要对整组数据进行统计汇总例如计算总和、平均值、最大值或标准差等。这类运算通常称为聚合运算Aggregation或归约运算Reduction即将一组元素归约为一个统计结果。NumPy 提供了一组用于对数组元素进行统计汇总的函数。这些函数可以对整个数组进行聚合计算也可以通过 axis 参数沿指定轴进行统计从而实现按行或按列计算。按照功能划分NumPy 中常见的归约运算函数通常可以分为以下几类1基本统计量2极值运算3位置索引函数4累计运算5离散程度函数6顺序统计函数7逻辑归约运算8NaN 安全归约函数需要说明的是对于许多归约运算除了函数形式np.sum(a)也可以写成数组方法形式a.sum()两种写法在大多数情况下等价。为了保持本手册结构统一本文主要采用 NumPy 函数形式np.function进行说明。一、基本统计量sum()计算数组元素之和Summation。numpy.sum(a, axisNone, dtypeNone, outNone, keepdimsFalse)参数说明• a输入数组• axis计算轴• dtype计算使用的数据类型• out结果输出数组• keepdims是否保留被计算的维度示例np.sum([1,2,3,4])# 10prod()计算数组元素的乘积Product。numpy.prod(a, axisNone, dtypeNone, outNone, keepdimsFalse)示例np.prod([1,2,3,4])# 24mean()计算数组元素的平均值算术平均数Arithmetic Mean。numpy.mean(a, axisNone, dtypeNone, outNone, keepdimsFalse)参数说明• a输入数组• axis计算轴默认对整个数组计算• dtype计算使用的数据类型• out结果输出数组• keepdims是否保留被计算的维度示例 1a np.array([1,2,3,4])np.mean(a)# 2.5示例 2按列计算平均值a np.array([[1,2,3], [4,5,6]]) np.mean(a, axis0)# [2.5 3.5 4.5]示例 3保留维度np.mean(a, axis0, keepdimsTrue)# [[2.5 3.5 4.5]]average()计算数组元素的加权平均值Weighted Average。numpy.average(a, axisNone, weightsNone)参数说明• a输入数组• axis可选指定聚合轴• weights可选权重数组示例scores np.array([80, 90, 100])weights np.array([0.2, 0.3, 0.5]) np.average(scores, weightsweights)# 92.0说明average() 与 mean() 的区别在于支持权重计算。count_nonzero()统计非零元素数量Count Non-Zero Elements。numpy.count_nonzero(a, axisNone, keepdimsFalse)参数说明• a输入数组• axis计算轴• keepdims是否保留被计算的维度示例a np.array([0,1,2,0,3]) np.count_nonzero(a)# 3提示若需要统计数组的元素总数可以使用 a.size 或 np.size(a)若使用 len(a)则只返回数组第一维的长度而不是元素总数。二、极值运算max()返回数组元素中的最大值Maximum。numpy.max(a, axisNone, outNone, keepdimsFalse)参数说明• a输入数组• axis计算轴• out结果输出数组• keepdims是否保留被计算的维度示例a np.array([3,7,2,9]) np.max(a)# 9min()返回数组元素中的最小值Minimum。numpy.min(a, axisNone, outNone, keepdimsFalse)示例np.min(a)# 2ptp()计算数组元素的极差Peak To Peak。极差表示数组中的最大值与最小值之差。numpy.ptp(a, axisNone, outNone, keepdimsFalse)参数说明• a输入数组• axis计算轴示例np.ptp([3,7,2,9])# 7三、位置索引函数有时不仅需要获得极值本身还需要确定该值在数组中的位置。argmax()返回最大值所在的索引。numpy.argmax(a, axisNone)示例a np.array([1,7,3,5])np.argmax(a)# 1说明返回最大值第一次出现的位置。argmin()返回最小值所在的索引。numpy.argmin(a, axisNone)示例np.argmin([3,1,5])# 1四、累计运算累计运算用于计算数组元素的前缀统计结果即每一步都包含前面所有元素的累计值。cumsum()计算累计和Cumulative Sum。numpy.cumsum(a, axisNone, dtypeNone, outNone)参数说明• a输入数组• axis计算轴• dtype计算使用的数据类型• out结果输出数组示例np.cumsum([1,2,3,4])# [ 1 3 6 10]cumprod()计算累计乘积Cumulative Product返回每一步相乘结果。numpy.cumprod(a, axisNone, dtypeNone, outNone)示例np.cumprod([1,2,3,4])# [ 1 2 6 24]五、离散程度函数这些函数用于描述数据的离散程度或分布特征。std()计算标准差Standard Deviation。numpy.std(a, axisNone, dtypeNone, outNone, ddof0, keepdimsFalse)参数说明• a输入数组• axis计算轴• ddof自由度修正Delta Degrees of Freedom默认值 0ddof 0总体标准差ddof 1样本标准差在数据分析、机器学习中如果数据来自样本数据集通常使用 ddof1。示例a np.array([1,2,3,4]) np.std(a, ddof1)# 1.2909944487358056var()计算方差Variance。numpy.var(a, axisNone, dtypeNone, outNone, ddof0, keepdimsFalse)参数说明• a输入数组• axis计算轴• ddof自由度修正示例a np.array([1,2,3,4])np.var(a) # ddof0总体方差# 1.25 np.var(a, ddof1) # 样本方差# 1.6666666666666667六、顺序统计函数median()计算数组元素的中位数Median。中位数是将数据按大小排序后位于中间位置的数值用于描述数据的中心位置对极端值不敏感。numpy.median(a, axisNone, outNone, overwrite_inputFalse, keepdimsFalse)参数说明• a输入数组• axis计算轴• out结果输出数组• keepdims是否保留被计算的维度示例a np.array([1,3,5,7,9])np.median(a)# 5说明当数组元素个数为偶数时中位数为中间两个数的平均值。percentile()计算数组的百分位数Percentile。百分位数表示在排序后的数据中有 q% 的数据小于或等于该值。numpy.percentile(a, q, axisNone)参数说明• a输入数组• q百分位0–100• axis计算轴示例a np.array([1,2,3,4,5]) np.percentile(a, 50)# 3说明50% 百分位数即中位数。quantile()计算数组的分位数Quantile。分位数与百分位数本质相同只是表示方式不同percentile() 使用 0–100 的百分比表示而 quantile() 使用 0–1 的比例表示。numpy.quantile(a, q, axisNone)参数说明• a输入数组• q分位数0–1• axis计算轴示例np.quantile(a, 0.5) # 等价于 percentile(a, 50)# 3说明percentile() 和 quantile() 函数还支持 method 参数用于指定分位数/百分位数的计算方法NumPy 2.0 起还支持加权分位数。七、逻辑归约运算NumPy 还提供用于布尔数组统计的函数。any()判断数组中是否存在 True。numpy.any(a)示例np.any([False, False, True])# Trueall()判断数组元素是否全部为 True。numpy.all(a)示例np.all([True, True, False])# False说明这两个函数在条件筛选与逻辑判断中非常常见。八、NaN 安全归约函数在真实数据中经常会出现缺失值NaN。普通聚合函数在参与计算的元素包含 NaN 时通常会使结果变为 NaN。NumPy 提供了一组忽略 NaN 的统计函数。常见函数包括np.nansum()np.nanmean()np.nanmax()np.nanmin()np.nanstd()np.nanvar()np.nanmedian()np.nanpercentile()np.nanquantile()np.nancumsum()np.nancumprod()示例a np.array([1,2,np.nan,4]) np.mean(a)# nan np.nanmean(a)# 2.333333...说明nanmean() 在计算平均值时忽略 NaN 元素。 小结NumPy 提供了一套用于数组统计汇总的归约运算函数包括基本统计量sum、prod、mean、average、极值运算max、min、ptp、位置索引函数argmax、argmin、累计运算cumsum、cumprod、离散程度函数std、var以及顺序统计函数median、percentile、quantile。此外NumPy 还提供逻辑归约函数any、all以及忽略缺失值的 NaN 安全函数nanmean、nanmax、nansum 等。这些函数均支持 axis 参数可按行或按列进行统计是数据分析、科学计算与机器学习中的基础工具。“点赞有美意赞赏是鼓励”