理解numpy的rollaxis與swapaxes函式
阿新 • • 發佈:2018-11-25
現在再說rollaxis函式,這個函式有三個引數
numpy.rollaxis(arr, axis, start)
arr:輸入陣列
axis:要向後滾動的軸,其它軸的相對位置不會改變
start:預設為零,表示完整的滾動。會滾動到特定位置
import numpy as np a = np.arange(8).reshape(2, 2, 2) print '原陣列:' print a print '\n' # 將軸 2 滾動到軸 0(寬度到深度) print '呼叫 rollaxis 函式:' print np.rollaxis(a, 2) # 將軸 0 滾動到軸 1:(寬度到高度) print '\n' print '呼叫 rollaxis 函式:' print np.rollaxis(a, 2, 1)
原陣列:
[[[0 1]
[2 3]]
[[4 5]
[6 7]]]
呼叫 rollaxis 函式:
[[[0 2]
[4 6]]
[[1 3]
[5 7]]]
呼叫 rollaxis 函式:
[[[0 2]
[1 3]]
[[4 6]
[5 7]]]
程式執行np.rollaxis(a, 2)時,講軸2滾動到了軸0前面,其他軸相對2軸位置不變(start預設0),陣列下標排序由0,1,2變成了1,2,0
這時陣列按下標順序重組,例如第一個陣列中[0,1]下標為[000,001],其中0的下標變動不影響值,1位置的下標由001變成010,第一位的下標滾動到最後一位下標的後面,值由1(001)變成2(010):
可以得出軸的滾動就是下標的滾動,同理,執行np.rollaxis(a, 2, 1)時將下標0,1,2變為0,2,
numpy.swapaxes(arr, axis1, axis2)函式則是交換,將axis1和axis2進行互換