numpy中transpose和swapaxes函式
阿新 • • 發佈:2018-12-31
.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])