NumPy 中文教程

第一部分:基础认知与环境准备
第 1 章 全面认识 NumPy
第 2 章 开发环境搭建与验证
第二部分:核心对象 ——ndarray 数组
第 3 章 ndarray 数组基础
第 4 章 数组的形状与维度操作
第四部分:高级应用与数据处理
第 8 章 数组的排序、查找与去重
第 9 章 缺失值与异常值处理
第 10 章 随机数生成与抽样
第 11 章 文件读写与数据交互
第五部分:实战场景与落地应用
第 12 章 数值计算实战
第 13 章 数据分析实战
第六部分:优化进阶与问题解决
第 14 章 NumPy 性能优化
第 15 章 NumPy 进阶扩展
第 16 章 常见问题与解决方案

6.3 统计运算

NumPy统计运算教程:从基础到加权统计全面指南

NumPy 中文教程

本教程详细讲解NumPy中的统计运算函数,覆盖基础统计量如sum、mean、median、std、var,极值与位置函数如min、max、argmin、argmax、ptp,累计运算函数如cumsum、cumprod、cummin、cummax,按轴统计axis参数详解,以及加权统计np.average(),适合新手快速上手NumPy数据处理。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

NumPy统计运算教程

引言

NumPy是Python科学计算的核心库,提供了高效的数组操作和数学函数。统计运算是数据分析的基础,NumPy内置了丰富的统计函数,使得数据处理变得简单快捷。本教程将一步步教你如何使用这些函数,从基础概念到高级应用,适合初学者学习。

1. 基础统计量

基础统计量用于描述数据的集中趋势和离散程度。NumPy提供了多种函数来计算这些量。

1.1 sum: 求和

np.sum(array) 函数计算数组中所有元素的和。可以应用于任何维度的数组。

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(np.sum(arr))  # 输出: 15

解释:这里创建了一个一维数组,np.sum(arr) 返回所有元素的和,即1+2+3+4+5=15。

1.2 mean: 平均值

np.mean(array) 计算数组元素的平均值,公式为总和除以元素个数。

arr = np.array([1, 2, 3, 4, 5])
print(np.mean(arr))  # 输出: 3.0

解释:平均值是15/5=3.0,表示数据的中心位置。

1.3 median: 中位数

np.median(array) 计算数组元素的中位数,即排序后中间的值。对于偶数个元素,取中间两个值的平均值。

arr = np.array([1, 2, 3, 4, 5])
print(np.median(arr))  # 输出: 3.0

解释:数组排序后是[1,2,3,4,5],中位数是中间的元素3。

1.4 std: 标准差

np.std(array) 计算数组元素的标准差,用于衡量数据的离散程度。公式基于方差的平方根。

arr = np.array([1, 2, 3, 4, 5])
print(np.std(arr))  # 输出: 约1.4142

解释:标准差表示数据点偏离平均值的程度。

1.5 var: 方差

np.var(array) 计算数组元素的方差,是标准差的平方,表示数据的变异大小。

arr = np.array([1, 2, 3, 4, 5])
print(np.var(arr))  # 输出: 2.0

解释:方差为(1-3)^2 + (2-3)^2 + ... = 10/5=2.0。

2. 极值与位置

极值与位置函数帮助找到数据的最小值、最大值及其在数组中的位置。

2.1 min 和 max: 最小值和最大值

np.min(array) 返回数组中的最小值,np.max(array) 返回最大值。

arr = np.array([1, 2, 3, 4, 5])
print(np.min(arr))  # 输出: 1
print(np.max(arr))  # 输出: 5

解释:minmax 直接给出数值,不加其他处理。

2.2 argmin 和 argmax: 最小值和最大值的位置

np.argmin(array) 返回最小值在数组中的索引位置,np.argmax(array) 返回最大值的索引位置。索引从0开始。

arr = np.array([1, 2, 3, 4, 5])
print(np.argmin(arr))  # 输出: 0(对应元素1)
print(np.argmax(arr))  # 输出: 4(对应元素5)

解释:在数据分析中,有时需要知道极值出现的位置,例如找最大值对应的事件。

2.3 ptp: 极差

np.ptp(array) 返回最大值减去最小值的结果,即数据的范围。

arr = np.array([1, 2, 3, 4, 5])
print(np.ptp(arr))  # 输出: 4(5-1)

解释:极差是简单衡量数据分散度的指标。

3. 累计运算

累计运算函数沿着数组的轴逐步计算累积值,常用于时间序列或逐步求和。

3.1 cumsum: 累计和

np.cumsum(array) 返回数组中每个位置的累计和,结果是一个与原数组同形状的新数组。

arr = np.array([1, 2, 3, 4, 5])
print(np.cumsum(arr))  # 输出: [ 1  3  6 10 15]

解释:第一个元素是1,第二个是1+2=3,以此类推。

3.2 cumprod: 累计积

np.cumprod(array) 返回累计积,即每个位置之前所有元素的乘积。

arr = np.array([1, 2, 3, 4, 5])
print(np.cumprod(arr))  # 输出: [ 1  2  6 24 120]

解释:常用于计算阶乘或累积因子。

3.3 cummin 和 cummax: 累计最小值和最大值

np.cummin(array) 返回累计最小值,np.cummax(array) 返回累计最大值。

arr = np.array([3, 1, 4, 2, 5])
print(np.cummin(arr))  # 输出: [3 1 1 1 1]
print(np.cummax(arr))  # 输出: [3 3 4 4 5]

解释:累计最小值从第一个元素开始,每个位置取之前所有元素的最小值;累计最大值类似。

4. 按轴统计

在NumPy中,许多函数支持 axis 参数,允许沿特定轴进行计算,这对于多维数组尤其有用。

4.1 axis 参数详解

axis 参数指定沿哪个轴计算,可以是整数(如0或1)或元组(用于多轴)。

  • 对于一个2D数组 arr = np.array([[1, 2, 3], [4, 5, 6]]):
    • axis=0 表示沿第一个轴(行方向)操作,即跨行计算。
    • axis=1 表示沿第二个轴(列方向)操作,即跨列计算。

示例:

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.sum(arr, axis=0))  # 沿轴0求和:输出 [5 7 9](每列的和)
print(np.sum(arr, axis=1))  # 沿轴1求和:输出 [6 15](每行的和)

解释:axis=0 意味着在行的维度上压缩,结果是列向量;axis=1 反之。

4.2 其他函数使用 axis

大多数统计函数都支持 axis 参数,如 mean、std 等。

# 计算每列的平均值
print(np.mean(arr, axis=0))  # 输出: [2.5 3.5 4.5]
# 计算每行的标准差
print(np.std(arr, axis=1))  # 输出: [0.8165 0.8165]

5. 加权统计

NumPy提供了 np.average() 函数来计算加权平均值,适用于需要考虑不同权重的情况。

5.1 np.average() 函数

np.average(array, weights=weights) 计算加权平均值,其中 weights 是与 array 形状相同的权重数组。

示例:假设数组 arr = np.array([1, 2, 3, 4, 5]) 和权重 weights = np.array([0.1, 0.2, 0.3, 0.2, 0.2])

arr = np.array([1, 2, 3, 4, 5])
weights = np.array([0.1, 0.2, 0.3, 0.2, 0.2])
print(np.average(arr, weights=weights))  # 输出: 约3.2

解释:加权平均值 = (10.1 + 20.2 + 30.3 + 40.2 + 5*0.2) / (0.1+0.2+0.3+0.2+0.2)。权重数组的总和应为1,但NumPy会自动处理。

注意:权重数组应与原始数组形状匹配,否则会抛出错误。

结语

通过本教程,你应该对NumPy中的统计运算有了全面的了解。从基础统计量到高级的加权统计,这些函数是数据分析的基础工具。多加练习,尝试在不同维度数组上应用这些函数,你将能更高效地处理数据。NumPy的强大在于其简洁和速度,掌握这些统计运算将为你的数据科学之旅奠定坚实基础。

如果有任何疑问,建议查阅NumPy官方文档获取更多详细信息。

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包