NumPy 模块
NumPy 模块常用功能与方法总结
NumPy(Numerical Python)是 Python 的核心科学计算库,提供高性能的多维数组对象(ndarray
)和大量数学运算函数。以下是其核心功能及常用方法:
一、数组创建与基础操作
1. 创建数组
方法 | 说明 | 示例 |
---|---|---|
np.array() | 从列表/元组创建数组 | np.array([1, 2, 3]) |
np.zeros() | 全零数组 | np.zeros((3, 3)) |
np.ones() | 全一数组 | np.ones((2, 2)) |
np.arange() | 等差序列 | np.arange(0, 10, 2) |
np.linspace() | 等间隔序列 | np.linspace(0, 1, 5) |
np.random.rand() | [0,1) 均匀分布随机数组 | np.random.rand(2, 3) |
2. 数组属性
属性 | 说明 | 示例 |
---|---|---|
arr.shape | 数组维度 | (3, 3) |
arr.dtype | 数据类型 | float64 |
arr.size | 元素总数 | 9 |
arr.ndim | 维度数 | 2 |
3. 数组操作
方法 | 说明 | 示例 |
---|---|---|
arr.reshape() | 改变形状 | arr.reshape(3, 3) |
arr.flatten() | 展平为一维数组 | arr.flatten() |
np.concatenate() | 数组拼接 | np.concatenate([arr1, arr2]) |
np.split() | 分割数组 | np.split(arr, 3) |
二、数学运算
1. 基础运算
运算 | 说明 | 示例 |
---|---|---|
+ , - , * , / | 逐元素运算 | arr1 + arr2 |
np.sqrt() | 平方根 | np.sqrt(arr) |
np.exp() | 指数函数 | np.exp(arr) |
np.log() | 自然对数 | np.log(arr) |
2. 统计运算
方法 | 说明 | 示例 |
---|---|---|
np.sum() | 求和 | np.sum(arr) |
np.mean() | 平均值 | np.mean(arr) |
np.max() | 最大值 | np.max(arr) |
np.min() | 最小值 | np.min(arr) |
np.std() | 标准差 | np.std(arr) |
3. 线性代数
方法 | 说明 | 示例 |
---|---|---|
np.dot() | 矩阵乘法 | np.dot(A, B) |
np.linalg.inv() | 矩阵求逆 | np.linalg.inv(A) |
np.linalg.eig() | 特征值与特征向量 | np.linalg.eig(A) |
三、随机数生成
方法 | 说明 | 示例 |
---|---|---|
np.random.rand() | [0,1) 均匀分布 | np.random.rand(3) |
np.random.randn() | 标准正态分布 | np.random.randn(2, 2) |
np.random.randint() | 随机整数 | np.random.randint(0, 10) |
np.random.normal() | 自定义正态分布 | np.random.normal(loc=0, scale=1) |
np.random.shuffle() | 原地打乱数组 | np.random.shuffle(arr) |
四、索引与切片
1. 基础索引
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[0, 1]) # 2(第0行第1列)
print(arr[:, 1]) # [2, 5](所有行的第1列)
2. 布尔索引
arr = np.array([1, 2, 3, 4])
print(arr[arr > 2]) # [3, 4]
3. 花式索引
arr = np.array([9, 8, 7, 6])
print(arr[[0, 2]]) # [9, 7]
五、广播机制
NumPy 允许不同形状的数组进行逐元素运算(自动扩展维度):
arr = np.array([1, 2, 3])
print(arr + 5) # [6, 7, 8](标量广播)
六、文件 I/O
方法 | 说明 | 示例 |
---|---|---|
np.save() | 保存为 .npy 文件 | np.save('data.npy', arr) |
np.load() | 加载 .npy 文件 | np.load('data.npy') |
np.savetxt() | 保存为文本文件 | np.savetxt('data.txt', arr) |
七、常用技巧
-
向量化操作:避免循环,用数组运算提升性能。
# 低效(循环) result = [x + 1 for x in arr] # 高效(向量化) result = arr + 1
-
掩码过滤:
arr = np.array([1, 2, 3, 4]) mask = arr > 2 print(arr[mask]) # [3, 4]
-
类型转换:
arr = np.array([1.5, 2.3]) print(arr.astype(int)) # [1, 2]
总结
NumPy 的核心功能围绕 多维数组 和 高效运算 展开,适用于:
- 数值计算(如矩阵运算、统计)
- 数据预处理(如归一化、过滤)
- 科学计算(如物理模拟、机器学习)
学习建议:
- 掌握
ndarray
的创建和操作。 - 熟练使用广播机制和向量化运算。
- 结合 SciPy、Pandas 等库构建完整的数据分析流程。
官方文档:numpy.org