NumPy 简介
NumPy 是 Python 中处理多维数组和矩阵的核心库,提供了高效的数组运算功能,是数据科学、机器学习和科学计算的重要工具。
特点:
- 多维数组对象 (
ndarray
):用于存储单一数据类型的矩阵。
- 广播机制:支持不同形状数组的运算。
- 高效性:使用底层 C 实现的高性能计算。
- 丰富的函数库:内置许多数学、统计和线性代数功能。
常用模块与函数
1. 数组创建
这些函数用于创建 NumPy 数组。
函数 |
描述 |
示例代码 |
np.array |
从列表或元组创建数组 |
np.array([1, 2, 3]) |
np.zeros |
创建全零数组 |
np.zeros((3, 2)) |
np.ones |
创建全一数组 |
np.ones((2, 2)) |
np.full |
创建指定值填充的数组 |
np.full((2, 3), 5) |
np.eye |
创建单位矩阵 |
np.eye(3) |
np.empty |
创建未初始化的数组(内容随机) |
np.empty((2, 3)) |
np.arange |
创建范围数组 |
np.arange(0, 10, 2) |
np.linspace |
创建等间隔的值数组 |
np.linspace(0, 1, 5) |
np.random.rand |
创建均匀分布随机数组 |
np.random.rand(2, 3) |
np.random.randint |
创建随机整数数组 |
np.random.randint(0, 10, (2, 3)) |
2. 数组属性与形状
这些函数用于查看或修改数组的属性和形状。
函数 |
描述 |
示例代码 |
.ndim |
返回数组维度 |
a.ndim |
.shape |
返回数组形状 |
a.shape |
.size |
返回数组总元素数 |
a.size |
.dtype |
返回数组数据类型 |
a.dtype |
.astype |
转换数组数据类型 |
a.astype('float32') |
.reshape |
改变数组形状 |
a.reshape(3, 2) |
.ravel |
将数组展平为一维 |
a.ravel() |
.T |
转置数组 |
a.T |
3. 数学运算
这些函数用于执行数学运算。
函数 |
描述 |
示例代码 |
np.add |
数组加法 |
np.add(a, b) |
np.subtract |
数组减法 |
np.subtract(a, b) |
np.multiply |
数组乘法(元素级) |
np.multiply(a, b) |
np.divide |
数组除法(元素级) |
np.divide(a, b) |
np.power |
元素幂运算 |
np.power(a, 2) |
np.sqrt |
元素平方根 |
np.sqrt(a) |
np.exp |
指数函数 |
np.exp(a) |
np.log |
自然对数 |
np.log(a) |
np.sin / np.cos |
三角函数 |
np.sin(a) |
4. 统计函数
用于计算数组的统计属性。
函数 |
描述 |
示例代码 |
np.sum |
求和 |
np.sum(a) |
np.mean |
平均值 |
np.mean(a) |
np.median |
中位数 |
np.median(a) |
np.std |
标准差 |
np.std(a) |
np.var |
方差 |
np.var(a) |
np.max / np.min |
最大值/最小值 |
np.max(a) |
np.argmax |
最大值索引 |
np.argmax(a) |
np.argmin |
最小值索引 |
np.argmin(a) |
5. 数组操作
这些函数用于操作数组内容。
函数 |
描述 |
示例代码 |
np.concatenate |
拼接数组 |
np.concatenate((a, b), axis=0) |
np.split |
分割数组 |
np.split(a, 2) |
np.vstack |
垂直堆叠 |
np.vstack((a, b)) |
np.hstack |
水平堆叠 |
np.hstack((a, b)) |
np.flip |
翻转数组 |
np.flip(a) |
np.sort |
排序 |
np.sort(a) |
6. 条件与过滤
函数 |
描述 |
示例代码 |
np.where |
根据条件选择 |
np.where(a > 2, a, 0) |
np.nonzero |
返回非零元素索引 |
np.nonzero(a) |
np.unique |
获取数组的唯一值 |
np.unique(a) |
np.isin |
判断元素是否在列表中 |
np.isin(a, [1, 2]) |
7. 线性代数
这些函数用于矩阵运算。
函数 |
描述 |
示例代码 |
np.dot |
点积 |
np.dot(a, b) |
np.matmul |
矩阵乘法 |
np.matmul(a, b) |
np.linalg.inv |
矩阵求逆 |
np.linalg.inv(a) |
np.linalg.det |
矩阵行列式 |
np.linalg.det(a) |
np.linalg.eig |
特征值和特征向量 |
np.linalg.eig(a) |
np.linalg.norm |
矩阵范数 |
np.linalg.norm(a) |
8. 随机数生成
函数 |
描述 |
示例代码 |
np.random.rand |
均匀分布随机数 |
np.random.rand(3, 3) |
np.random.randn |
标准正态分布随机数 |
np.random.randn(3, 3) |
np.random.randint |
随机整数 |
np.random.randint(0, 10, (2, 3)) |
np.random.choice |
随机采样 |
np.random.choice(a, 3) |