numpy 学习汇总39- 翻转数组( 初步学习 tcy)

翻转数组  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]]])
===================================================================

你可能感兴趣的:(numpy)