本资料深入浅出地总结了Python中NumPy库常用的函数和用法,旨在帮助初学者快速掌握数组操作、数学计算等核心技能。适合数据分析与科学计算人员参考学习。
### Python Numpy 常用函数详解
#### Numpy简介
Numpy是Python中的一个开源库,主要用于处理大型多维数组和矩阵,并提供了一系列用于执行数学运算的工具。它不仅支持高效的数组操作,还提供了丰富的数学函数来处理数组数据。由于Numpy提供了高性能的科学计算环境,它通常与其他科学计算库如Scipy和绘图库matplotlib一起使用。
#### 数组常用函数
- **`where()`**: 此函数可以根据给定条件返回满足该条件元素在数组中的索引位置。例如,`np.where(a > 10)`将返回所有大于10的元素的位置。
- **`take(a, index)`**: 根据提供的索引从数组 `a` 中提取相应的元素值。这有助于快速访问特定位置的数据点。
- **`linspace(a, b, N)`**: 创建一个包含N个等间距数值的数组,这些数位于区间[a,b]内(包括边界)。例如,使用`np.linspace(0, 10, 5)`, 可以生成从0到10之间有五个相等间隔点的序列。
- **`a.fill(value)`**: 将数组 `a` 的所有元素都设置为指定值。这对于初始化数组非常有用。
- **`diff(a)`**: 计算相邻元素之间的差分,并返回一个新的包含这些差异的新数组。这在信号处理中特别有用。
- **`sign(a)`**: 返回每个输入元素的符号(即,负数、零或正数)作为输出值。
- **`piecewise(a, condlist, funclist)`**: 根据条件列表 `condlist`, 对数组 `a` 的不同部分应用不同的函数 `funclist`. 这是一种灵活的方式来定义分段函数。
- **`a.argmax()`, `a.argmin()`**: 分别返回最大值和最小值在数组中的索引位置。
#### 改变数组维度
- **`ravel(a)`**, **`flatten(a)`**: 将多维数组展平为一维形式的数组。
- **`reshape(m, n)`, `shape=(m, n)`**: 更改现有形状,将其转换成指定的行数和列数(即 m 行 n 列)的形式。
- **`transpose()`, `T`**: 将矩阵转置为新的形式。
#### 数组组合
- **`hstack((a, b))`, `concatenate((a, b), axis=1)`**: 水平堆叠数组 a 和 b,即在它们的右侧或左侧添加另一个。
- **`vstack((a, b))`, `concatenate((a, b), axis=0)`**: 垂直堆叠(上下排列)两个数组。
- **`row_stack((a, b))`**: 按行方向堆叠数组 a 和 b。
- **`column_stack((a, b))`**: 将数组按列组合在一起。
#### 数组分割
- **`split(a, n, axis=0)`, `vsplit(a, n)`**: 垂直分割(沿垂直轴)数组,将其分成n个相等的部分。
- **`hsplit(a, n), split(a, n, axis=1)`**: 水平地将一个大矩阵拆分为多个小的子矩阵。
#### 数组修剪和压缩
- **`clip(m, n)`**: 设置数组 a 的值范围,任何低于m或高于n的数据都将被裁剪到这些边界内。
- **`compress(condition)`**: 根据条件选择并返回相应的元素。
#### 数组属性
- **`dtype`**: 返回数据类型的信息。
- **`shape`**: 返回形状信息(即维度大小)。
- **`ndim`**: 维度的数量。
- **`size`**: 元素总数目。
- **`itemsize`**: 每个元素占用的字节大小。
- **`nbytes`**: 数组占有的总字节数量。
- **astype(int)**: 将数据类型转换为整数形式。
#### 数学计算
- **average(a, weights=v)**: 对数组 a 进行加权平均,其中 v 是权重数组。
- **mean(), max(), min(), median(), var()**: 计算均值、最大值、最小值、中位数和方差等统计信息。
- **prod():** 返回所有元素的乘积结果。
- **cumprod():** 给出累积乘积的结果,即逐个相乘后的累计总和。
- **cov(a, b), corrcoef(a, b)**: 计算两个数组之间的协方差矩阵及相关系数。
- **diagonal()**: 获取主对角线元素