翻转数组 2018/11/29
======================================================================
函数 描述
transpose 对换数组的维度
ndarray.T 和 self.transpose() 相同
rollaxis 向后滚动指定的轴
swapaxes 对换数组的两个轴
=======================================================================
1.转置np.transpose(a, axes=None)#是重塑一种特殊形式,返回据数据的视图
# 无参数:反转轴的顺序;对于a.shape=(2, 3)的数组必须是无参数. (i,j)参数类似轴i,j互换
# 实例1: # 对于一维数组,这不起作用;
a=np.arange(6).reshape(2,3) # array([[0, 1, 2],[3, 4, 5]])
a.T # array([[0, 3], [1, 4], [2, 5]])
a.transpose() # array([[0, 3],[1, 4],[2, 5]]) # a.transpose(0)# 错误
# 实例2: #对于高维数组, transpose需要一组轴编号:
a.transpose(0,1,2) # a0.shape# (2, 2, 3) 原形状(2, 2, 3)
=======================================================================
2.numpy.rollaxis(arr, axis, start) #向后滚动特定的轴到一个特定位置
# 参数说明:
# axis:要向后滚动的轴,其它轴的相对位置不会改变
# start:默认为零,表示完整的滚动。会滚动到特定位置。
# 实例1
a = np.arange(6).reshape(2,3)
b = np.arange(8).reshape(2,2,2)
np.rollaxis(a,1,0)#0可省略
np.rollaxis(b,2) # 将轴 2 滚动到轴 0(宽度到深度)
np.rollaxis(b,2,1)# 将轴 0 滚动到轴 1(宽度到高度)
# 输出:
a rollaxis(a,1,0) b np.rollaxis(b,2) rollaxis(b,2,1)
[[0, 1, 2], [[0, 3], [[[0 1] [[[0 2] [[[0 2]
[3, 4, 5]] [1, 4], [2 3]] [4 6]] [1 3]]
[2, 5]] [[4 5] [[1 3] [[4 6]
[6 7]]] [5 7]]] [5 7]]]
=================================================================
3.numpy.swapaxes(arr, axis1, axis2) #用于交换数组的两个轴
# 实例2
np.swapaxes(a,1,0) # np.swapaxes(a,0,1)等价
np.swapaxes(b, 2, 0)# 现在交换轴 0(深度方向)到轴 2(宽度方向)
# 输出:
a swapaxes(a,1,0) b swapaxes(b, 2, 0)
[[0, 1, 2], [[0, 3], [[[0 1] [[[0 4]
[3, 4, 5]] [1, 4], [2 3]] [2 6]]
[2, 5]] [[4 5] [[1 5]
[6 7]]] [3 7]]]
=================================================================
备注:
# 实例3: #对于高维数组, transpose需要一组轴编号:
a
array([[[0, 1, 2],
[3, 4, 5]],
[[6, 7, 8],
[9, 10, 11]]])
a.transpose(0, 1, 2) # a0.shape# (2, 2, 3) 原形状(2, 2, 3)
array([[[0, 1, 2],
[3, 4, 5]],
[[6, 7, 8],
[9, 10, 11]]])
a.transpose(1, 0, 2) # a1.shape# (2, 2, 3)原形状(2, 2, 3)
array([[[0, 1, 2],
[6, 7, 8]],
[[3, 4, 5],
[9, 10, 11]]])
a.transpose(0, 2, 1) # a2.shape# (2, 3, 2)原形状(2, 2, 3)
array([[[0, 3],
[1, 4],
[2, 5]],
[[6, 9],
[7, 10],
[8, 11]]])
a.transpose(2, 0, 1) # a3.shape#(3, 2, 2)原形状(2, 2, 3)
array([[[0, 3],
[6, 9]],
[[1, 4],
[7, 10]],
[[2, 5],
[8, 11]]])
a.transpose(1, 2, 0) # a4.shape#(2, 3, 2)原形状(2, 2, 3)
array([[[0, 6],
[1, 7],
[2, 8]],
[[3, 9],
[4, 10],
[5, 11]]])
a.transpose(2, 1, 0) # a5.shape#(3, 2, 2)原形状(2, 2, 3)
array([[[0, 6],
[3, 9]],
[[1, 7],
[4, 10]],
[[2, 8],
[5, 11]]])
a.T # array([[[ 0, 6], [ 3, 9]],[[ 1, 7],[ 4, 10]], [[ 2, 8],[ 5, 11]]])
===================================================================