NumPy - 数组操作
NumPy - 数组操作技巧
Section titled “NumPy - 数组操作技巧”NumPy 为操作 ndarray 对象(即 N 维数组,N-dimensional array)的形状、结构和内容提供了全面的例程集合。这些操作可以分为以下几类:
这些函数在不改变数据元素本身的情况下,修改数组的维度或布局。
| 函数/属性 | 描述 |
|---|---|
| reshape() | 返回一个具有新形状的数组,不改变数据。如果形状不兼容则失败。可能是视图或副本。 |
| ndarray.reshape() | reshape() 的方法版本。 |
| ndarray.flat | 数组上的一维迭代器。对于无论形状如何遍历所有元素都很有用。 |
| ndarray.flatten() | 返回数组展平为一维(1D)后的副本。 |
| ravel() | 返回一个展平的一维数组。如果可能,可能返回视图,否则返回副本。通常比 flatten() 快。 |
这些函数重新排列数组的轴(即维度,dimensions)。
| 函数/属性 | 描述 |
|---|---|
| transpose() | 根据指定的轴置换数组的维度。如果没有给出轴,则反转轴的顺序。 |
| ndarray.T | 一个属性,提供获取转置(反转维度顺序)的便捷方法。等同于不带参数的 transpose()。 |
| rollaxis() | 将指定的轴向后滚动,直到它位于给定的位置。(不如 transpose/swapaxes 常用)。 |
| swapaxes() | 互换数组的两个指定的轴。如果可能,返回视图。 |
用于修改维数或准备数组进行广播(broadcasting)的函数。
| 函数 | 描述 |
|---|---|
| broadcast | 生成一个封装数组间广播规则的对象。 |
| broadcast_to() | 显式地将数组广播到新的形状。如果形状不兼容广播则失败。返回一个只读视图。 |
| expand_dims() | 通过在指定位置插入一个新轴(大小为 1 的维度)来扩展数组的形状。 |
| squeeze() | 从数组中移除长度为一的轴。如果可能,返回视图。 |
用于将多个数组组合成一个更大的数组的函数。concatenate 是最通用的函数。
| 函数 | 描述 |
|---|---|
| concatenate() | 沿着一个现有轴连接一系列数组。除连接轴外,数组必须具有相同的形状。 |
| stack() | 沿着一个新轴连接一系列数组。输入数组必须具有相同的形状。 |
| hstack() | 水平(按列)堆叠数组序列。对于二维数组,相当于沿着 axis=1 的 concatenate。 |
| vstack() | 垂直(按行)堆叠数组序列。对于二维数组,相当于沿着 axis=0 的 concatenate。 |
用于将一个数组分割成多个较小数组的函数。
| 函数 | 描述 |
|---|---|
| split() | 沿着指定轴将数组分割成多个子数组。可以分割成 N 等份或在指定索引处分割。 |
| array_split() | 与 split 类似,但如果轴大小不能被 N 整除,则允许分割成非等份。 |
| hsplit() | 水平(按列)分割数组成多个子数组。相当于 axis=1 的 split。 |
| vsplit() | 垂直(按行)分割数组成多个子数组。相当于 axis=0 的 split。 |
添加/移除元素
Section titled “添加/移除元素”重要提示:NumPy 数组具有固定大小。append、insert 和 delete 等函数返回带有修改的新数组;它们不会原地修改原始数组。
| 函数 | 描述 |
|---|---|
| resize() | 返回具有指定形状的新数组。如果新形状更大,则用原始数组的重复副本填充;如果更小,则截断。 |
| append() | 将值附加到数组末尾(默认为展平后)。返回一个新数组。 |
| insert() | 沿着给定轴在指定索引前插入值。返回一个新数组。 |
| delete() | 返回删除指定轴上子数组后的新数组。 |
| unique() | 查找数组中的唯一元素并按排序顺序返回。还可以返回索引和计数。 |