Skip to content

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。

重要提示:NumPy 数组具有固定大小。append、insert 和 delete 等函数返回带有修改的新数组;它们不会原地修改原始数组。

函数描述
resize()返回具有指定形状的新数组。如果新形状更大,则用原始数组的重复副本填充;如果更小,则截断。
append()将值附加到数组末尾(默认为展平后)。返回一个新数组。
insert()沿着给定轴在指定索引前插入值。返回一个新数组。
delete()返回删除指定轴上子数组后的新数组。
unique()查找数组中的唯一元素并按排序顺序返回。还可以返回索引和计数。