1. 程式人生 > >numpy中transpose和swapaxes函式

numpy中transpose和swapaxes函式

.reshape

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]]])

以此陣列為模板討論
reshape((2,2,4))
意思是兩組2*4的陣列:
第0組
[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]]

第1組
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]

arr[0,1,3]  #結果就是7

.transpose

把元素下標換

arr.transpose(2,1,0)
array([[[ 0,  8],
        [ 4, 12]],

       [[ 1,  9],
        [ 5, 13]],

       [[ 2, 10],
        [ 6, 14]],

       [[ 3, 11],
        [ 7, 15]]])

就是對每個元素都做座標的替換。比如7本來位於arr[0,1,3] ,轉置為arr[3,1,0].第四組第二行第一列。

從整體看, 就是(2,2,4)維度變成(4,2,2)

以前的第一組的,會放到新的0,1,2,3組的第一列

.swapaxes(ax1,ax2)

將陣列n個維度中兩個維度進行調換,不改變原陣列

arr.swapaxes(0,2)=arr.swapaxes(2,0)
跟轉置同

arr.swapaxes(0,2)
Out[25]: 
array([[[ 0,  8],
        [ 4, 12]],

       [[ 1,  9],
        [ 5, 13]],

       [[ 2, 10],
        [ 6, 14]],

.flatten()

對陣列進行降維,返回摺疊後的一維陣列,原陣列不變

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