数组的翻转也是数组比较重要的操作之一,属于形状变化或维度变化的操作。可以通过以下方法实现,这些方法有属于ndarray的方法,也有属于numpy的方法。除此以外,数组的属性(ndarray.T)转置,也可以实现数组行列翻转的功能。
方法 | 说明 |
---|---|
ndarray.transpose() | 返回转置轴的数组视图 |
ndarray.T | 数组转置 |
numpy.swapaxes() | 返回交换了axis1和axis2的数组视图。 |
numpy.moveaxis() | 将数组的轴移动到新位置。 |
numpy.rollaxis() | 向后滚动指定的轴,直到它位于给定位置。 |
ndarray.transpose()
返回转置轴的数组视图。
ndarray.transpose(*axes)
参数说明:
返回值:
如果看不懂参数的请看示例:
>>> a = np.array([[1, 2], [3, 4]])
>>> a
array([[1, 2],
[3, 4]])
>>> a.transpose() # 无参数
array([[1, 3],
[2, 4]])
>>> a.transpose((1, 0)) # 二维数组只有两个轴,0表示原数组的行,1表示原数组的列,将原来的列放在元组索引为0的位置变成行,将原来的行放在元组索引为1的位置变为列。
array([[1, 3],
[2, 4]])
>>> a.transpose(1, 0) # 与元组功能相同,比较方便的一种写法。
array([[1, 3],
[2, 4]])
同时也可以参考numpy.transpose(),功能与该函数相同,参数略有不同。
数组中具有一个属性(ndarray.T)是转置的意思,将数组进行行列交换,示例如下:
>>> a = np.array([[1, 2], [3, 4]])
>>> a
array([[1, 2],
[3, 4]])
>>> a.T
array([[1, 3],
[2, 4]])
numpy.transpose()
numpy.transpose(a, axes=None)
参数说明:
返回值:
示例:
>>> x = np.arange(4).reshape((2,2))
>>> x
array([[0, 1],
[2, 3]])
>>> np.transpose(x)
array([[0, 2],
[1, 3]])
numpy.swapaxes()
numpy.swapaxes(a, axis1, axis2)
交换数组的两个轴。
参数说明:
返回值:
示例:
>>> x = np.array([[1,2,3]])
>>> x
array([[1, 2, 3]])
>>> np.swapaxes(x,0,1)
array([[1],
[2],
[3]])
ndarray.moveaxis()
将数组的轴移动到新位置。
numpy.moveaxis(a, source, destination)
参数说明:
返回值:
示例:
>>> x = np.arange(1,61).reshape(3,4,5)
>>> x.shape
(3,4,5)
>>> x
array([[[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20]],
[[21, 22, 23, 24, 25],
[26, 27, 28, 29, 30],
[31, 32, 33, 34, 35],
[36, 37, 38, 39, 40]],
[[41, 42, 43, 44, 45],
[46, 47, 48, 49, 50],
[51, 52, 53, 54, 55],
[56, 57, 58, 59, 60]]])
>>> y = np.moveaxis(x, 0, -1) # 将原来0轴(3页)中的3移动到最后一个轴(列),也就是变成3列。
>>> y
array([[[ 1, 21, 41],
[ 2, 22, 42],
[ 3, 23, 43],
[ 4, 24, 44],
[ 5, 25, 45]],
[[ 6, 26, 46],
[ 7, 27, 47],
[ 8, 28, 48],
[ 9, 29, 49],
[10, 30, 50]],
[[11, 31, 51],
[12, 32, 52],
[13, 33, 53],
[14, 34, 54],
[15, 35, 55]],
[[16, 36, 56],
[17, 37, 57],
[18, 38, 58],
[19, 39, 59],
[20, 40, 60]]])
>>> y.shape # 移动后的形状成4页,5行,3列
(4, 5, 3)
numpy.rollaxis()
向后滚动指定的轴,直到它位于给定位置。
numpy.rollaxis(a, axis, start=0)
参数说明:
返回值:
示例:
>>> a = np.ones((4,5,6)) # axis=0表示页,axis=1表示行,axis=2表示列
>>> np.rollaxis(a, 2, 1).shape # 将axis=2也就是列数6滚动到行axis=1也就是行
(4, 6, 5)