以下是 NumPy 在统计与矩阵运算中的核心用法总结
一、统计基础:用 NumPy 处理数据
1. 核心统计函数
操作 | 函数 | 场景示例 |
---|---|---|
均值 | np.mean(arr) | 计算用户平均年龄、销售额均值 |
中位数 | np.median(arr) | 分析收入分布(抗极端值干扰) |
标准差 | np.std(arr) | 评估数据波动(如股票价格稳定性) |
方差 | np.var(arr) | 测量数据离散程度 |
分位数 | np.quantile(arr, 0.75) | 确定成绩排名的75%分界线 |
scores = np.array([88, 72, 95, 60, 85])
print(f"平均分: {np.mean(scores)}") # 80.0
print(f"中位数: {np.median(scores)}") # 85.0
print(f"标准差: {np.std(scores):.1f}") # 12.8
2. 轴控制(axis
参数)
- 规则:
axis=0
(列统计),axis=1
(行统计)
data = np.array([[90, 85], [70, 92], [88, 78]])
print(np.mean(data, axis=0)) # 计算每科平均分 → [82.7 85.0]
二、矩阵运算:科学计算核心
1. 高频操作速查
操作 | 函数/符号 | 场景 |
---|---|---|
矩阵创建 | np.array([[1,2],[3,4]]) | 构建神经网络权重矩阵、图像像素矩阵 |
加法/减法 | + /- | 图像叠加、物理场叠加计算 |
矩阵乘法 | @ 或 np.dot() | 神经网络前向传播、3D变换 |
转置 | .T 或 np.transpose() | 数据格式转换、方程求解 |
逆矩阵 | np.linalg.inv() | 解线性方程组、坐标变换 |
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])# 矩阵乘法(点积)
print(A @ B) # [[19 22], [43 50]]# 解方程 Ax = b
b = np.array([5, 11])
x = np.linalg.inv(A) @ b # x = [1. 2.]
2. 常见误区
- 维度不匹配:矩阵乘法
A(m×n) @ B(n×p)
要求中间维度一致 - 逐元素乘 vs 矩阵乘:
*
是逐元素乘,@
是矩阵乘法
print(A * B) # 逐元素相乘 → [[5 12], [21 32]]
print(A @ B) # 矩阵乘法 → [[19 22], [43 50]]
三、实战技巧扩展
1. 广播机制简化计算
不同形状的数组自动扩展维度计算:
matrix = np.array([[1, 2], [3, 4]])
vector = np.array([10, 20])
print(matrix + vector) # [[11 22], [13 24]]
2. 与 Pandas 联动
将 DataFrame 转为 NumPy 数组进行高效计算:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
arr = df.to_numpy() # 转为NumPy数组加速计算
四、下一步练习建议
- 统计实战:用
np.percentile()
分析某城市房价分布。 - 矩阵应用:手动实现最小二乘法求解线性回归参数。
- 性能对比:比较 NumPy 与纯 Python 列表的运算速度差异。
遇到维度错误时,优先检查 .shape
属性!