1. 程式人生 > >理解numpy的rollaxis與swapaxes函式

理解numpy的rollaxis與swapaxes函式

現在再說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進行互換