【數據分析】Numpy——numpy.transpose() 轉置函數


【官網】https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.transpose.html

numpy.transpose(a, axes=None)[source]

參數a:array_like,輸入數組。

參數axes:int列表,可選,默認情況下,反轉維度,否則根據給定的值排列坐標軸。
Examples
>>> x = np.arange(4).reshape((2,2))
>>> x
array([[0, 1],
       [2, 3]])
>>> np.transpose(x)
array([[0, 2],
       [1, 3]])
>>> x = np.ones((1, 2, 3))
>>> np.transpose(x, (1, 0, 2)).shape
(2, 1, 3)

1、轉置可以對數組進行重置,返回的是源數據的視圖(不會進行任何復制操作)

2、轉置有三種方式:

    (1)transpose方法
    (2)T屬性
    (3)swapaxes方法。

方式一:T適用於一、二維數組

>>> import numpy as np
>>> arr = np.arange(20).reshape(4,5)#生成一個4行5列的數組
>>> arr
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
>>> arr.T #求轉置
array([[ 0,  5, 10, 15],
       [ 1,  6, 11, 16],
       [ 2,  7, 12, 17],
       [ 3,  8, 13, 18],
       [ 4,  9, 14, 19]])

 

方式二:

對於高維數組,transpose需要用到一個由軸編號組成的元組,才能進行轉置。

>>> arr = np.arange(12).reshape(2,2,3)
>>> arr
array([[[ 0,  1,  2],
        [ 3,  4,  5]],

       [[ 6,  7,  8],
        [ 9, 10, 11]]])
>>> arr.shape    # 看形狀 
(2, 2, 3)        # 說明這是一個2*2*3的數組(矩陣),返回的是一個元組,可以對元組進行索引,也就是0,1,2 >>> 

transpose參數的真正意義在於這個shape元組的索引

>>> arr.transpose(1,0,2)
array([[[ 0,  1,  2],
        [ 6,  7,  8]],

       [[ 3,  4,  5],
        [ 9, 10, 11]]])

方式三:swapaxes

接受一對軸編號,進行軸對換,其實也就是shape參數。

>>> arr = np.arange(16).reshape(2,2,4)
>>> arr
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],

       [[ 8,  9, 10, 11],
        [12, 13, 14, 15]]])
>>> arr.shape
(2, 2, 4)
>>> arr.swapaxes(1,2)
array([[[ 0,  4],
        [ 1,  5],
        [ 2,  6],
        [ 3,  7]],

       [[ 8, 12],
        [ 9, 13],
        [10, 14],
        [11, 15]]])
>>> arr.swapaxes(1,2)
array([[[ 0,  4],
        [ 1,  5],
        [ 2,  6],
        [ 3,  7]],

       [[ 8, 12],
        [ 9, 13],
        [10, 14],
        [11, 15]]])
>>> arr.swapaxes(1,0)   # 轉置,對比transpose(1,0,2)
array([[[ 0,  1,  2,  3],
        [ 8,  9, 10, 11]],

       [[ 4,  5,  6,  7],
        [12, 13, 14, 15]]])

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM