【官網】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]]])
