文章目录
- [NumPy 数组核心概念与操作指南](#NumPy 数组核心概念与操作指南)
-
- [一、NumPy 数组概述](#一、NumPy 数组概述)
-
- [1.1 与传统列表的比较](#1.1 与传统列表的比较)
- [1.2 数组类型系统](#1.2 数组类型系统)
- 二、数组创建与基本操作
-
- [2.1 创建数组](#2.1 创建数组)
- [2.2 数组维度理解](#2.2 数组维度理解)
- 三、数组索引与切片
-
- [3.1 基本索引](#3.1 基本索引)
- [3.2 切片操作](#3.2 切片操作)
- [3.3 提取矩阵的行/列](#3.3 提取矩阵的行/列)
- [3.4 切片的重要特性](#3.4 切片的重要特性)
- 四、数组变形与操作
-
- [4.1 重塑数组形状](#4.1 重塑数组形状)
- [4.2 数组拼接注意事项](#4.2 数组拼接注意事项)
- [4.3 数组分裂](#4.3 数组分裂)
- 五、数组运算与广播机制
-
- [5.1 基本运算](#5.1 基本运算)
- [5.2 广播规则](#5.2 广播规则)
- 六、线性代数与特殊函数
-
- [6.1 矩阵乘积](#6.1 矩阵乘积)
- [6.2 常用线性代数函数](#6.2 常用线性代数函数)
- **提示**:在实际应用中,理解这些核心概念对于高效使用NumPy进行科学计算和数据分析至关重要。广播机制和视图概念是NumPy最强大但也最容易误解的特性,需要特别注意。
- 总结
NumPy 数组核心概念与操作指南
一、NumPy 数组概述
1.1 与传统列表的比较
- Python 列表缺点:可以存储不同数据类型,需要额外空间存储类型信息,导致内存冗余
- NumPy 数组优势:要求所有元素类型一致,节省内存空间,提高计算效率
1.2 数组类型系统
- 整数型数组:所有元素均为整数时创建
- 浮点型数组:包含任意浮点数时自动升级为浮点型
- 类型同化原则:数组中所有元素会自动转换为最高精度的数据类型
二、数组创建与基本操作
2.1 创建数组
python
import numpy as np
# 将列表转换为数组
arr = np.array([1, 2, 3]) # 创建整数型数组
arr_float = np.array([1, 2.5, 3]) # 创建浮点型数组
# 使用专用函数创建数组
ones_arr = np.ones(5) # 创建全1数组
zeros_arr = np.zeros((2, 3)) # 创建全0二维数组
2.2 数组维度理解
- 一维数组:向量(单层中括号)
- 二维数组:矩阵(双层中括号)
- 高维数组:张量(多层中括号)
三、数组索引与切片
3.1 基本索引
python
arr = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
# 普通索引(单层中括号)
print(arr[0, 1]) # 输出: 2
# 花式索引(双层中括号)
print(arr[[0, 2], [1, 3]]) # 输出: [2, 12]
3.2 切片操作
python
# 矩阵切片(半开区间)
print(arr[1:3, 1:-1]) # 行1-2,列1-2(不含最后一列)
# 跳跃采样
print(arr[::2, ::3]) # 每隔2行、每隔3列采样
3.3 提取矩阵的行/列
python
# 提取行并转换为列向量
row = arr[1, :] # 提取第1行(一维数组)
col_matrix = row.reshape(-1, 1) # 转换为列向量(二维数组)
3.4 切片的重要特性
- 数组切片是视图而非副本,修改切片会影响原数组
- 内存优化技巧:使用
arr[:] = <表达式>
替代arr = <表达式>
可节省内存
四、数组变形与操作
4.1 重塑数组形状
python
# 使用reshape方法改变数组维度
vector = np.arange(1, 4) # 一维数组: [1, 2, 3]
matrix = vector.reshape(1, 3) # 二维数组: [[1, 2, 3]]
4.2 数组拼接注意事项
- 不同维度的数组不能直接拼接(如向量与矩阵)
- 必须先统一维度再进行拼接操作
4.3 数组分裂
python
# 使用split进行数组截断
arr = np.arange(10)
result = np.split(arr, [3, 7]) # 在索引3和7处分割数组
五、数组运算与广播机制
5.1 基本运算
- 乘法默认执行"逐元素相乘"(Hadamard积),而非矩阵乘法
5.2 广播规则
不同形状数组间运算的自动适配机制:
- 向量与矩阵运算:向量自动升级为行矩阵
- 特殊形状广播 :
- 行矩阵自动广播适配更高维数组
- 列矩阵自动广播适配更高维数组
六、线性代数与特殊函数
6.1 矩阵乘积
python
# 向量与向量的点积
v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])
dot_product = np.dot(v1, v2) # 点积运算
# 矩阵乘法
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])
mat_product = np.matmul(matrix1, matrix2) # 矩阵乘法
6.2 常用线性代数函数
np.linalg.inv()
: 矩阵求逆np.linalg.det()
: 矩阵行列式np.linalg.eig()
: 特征值与特征向量计算
提示:在实际应用中,理解这些核心概念对于高效使用NumPy进行科学计算和数据分析至关重要。广播机制和视图概念是NumPy最强大但也最容易误解的特性,需要特别注意。
总结
如果我的内容对你有帮助,请点赞👍、关注❤、收藏⭐️。创作不易,大家的支持就是我坚持下去的动力!