美文网首页
python矩阵转置

python矩阵转置

作者: JerryLoveCoding | 来源:发表于2019-07-19 11:36 被阅读0次

    python中的矩阵转置

    首先,数据应该是np.asarray型,
    然后,使用numpy.transpose来操作。


    transpose方法只能处理高维数组(>1),如果处理一维数组会报错;
    对于二维数组:

    data1 = np.arange(4).reshape((2,2))
    print(data1)
    >>[[0 1]
        [2 3]]
    data1 = np.transpose(data1)
    print(data1)
    >>[[0 2]
        [1 3]]
    
    

    对于三维数组:(3,2,2)的数组对应转置为(2,2,3)

    data1 = np.arange(12).reshape((3,2,2))
    print(data1)
    >>[[[ 0  1]
      [ 2  3]]
    
     [[ 4  5]
      [ 6  7]]
    
     [[ 8  9]
      [10 11]]]
    
    data1 = np.transpose(data1)
    print(data1)
    >>[[[ 0  4  8]
      [ 2  6 10]]
    
     [[ 1  5  9]
      [ 3  7 11]]]
    

    对于四维数组:(2,3,2,2)的数组对于转置为(2,2,3,2)

    data1 = np.arange(24).reshape((2,3,2,2))
    print(data1)
    >>[[[[ 0  1]
       [ 2  3]]
    
      [[ 4  5]
       [ 6  7]]
    
      [[ 8  9]
       [10 11]]]
    
    
     [[[12 13]
       [14 15]]
    
      [[16 17]
       [18 19]]
    
      [[20 21]
       [22 23]]]]
    
    data1 = np.transpose(data1)
    print(data1)
    >>[[[[ 0 12]
       [ 4 16]
       [ 8 20]]
    
      [[ 2 14]
       [ 6 18]
       [10 22]]]
    
    
     [[[ 1 13]
       [ 5 17]
       [ 9 21]]
    
      [[ 3 15]
       [ 7 19]
       [11 23]]]]
    

    所以默认的transpose()是将数组的形状和对应的元素全部倒置。
    对于有参数的transpose:对于三维数组,原型数组的参数应该是(0,1,2),对应的是外行,子行,子列,如果变成(1,0,2)就是将外行变成子行,子行变成外行。对于元素索引也发生同样改变,比如原来的元素3的索引是(0,1,1),转换后就是(1,0,1)

    data1 = np.arange(12).reshape((2,3,2))
    print(data1)
    data2 = data1.transpose(1, 0, 2)
    print(data2)
    >>[[[ 0  1]
      [ 2  3]
      [ 4  5]]
    
     [[ 6  7]
      [ 8  9]
      [10 11]]]
    >>[[[ 0  1]
      [ 6  7]]
    
     [[ 2  3]
      [ 8  9]]
    
     [[ 4  5]
      [10 11]]]
    

    相关文章

      网友评论

          本文标题:python矩阵转置

          本文链接:https://www.haomeiwen.com/subject/yprjlctx.html