NumPy 軸(axis)的概念

NumPy 數組的維數(dimensions)

NumPy 數組的維數(dimensions),一維數組的秩爲 1,二維數組的秩爲 2,以此類推。在numpy中用array.ndim查看。

NumPy 數組的軸(axis)

在 NumPy中,有個概念叫軸(axis),軸的個數等於數組的維數。設axis=i,則Numpy沿着第i個下標變化的方向進行操作。
之所以叫軸,我是這麼理解的,以這個2維矩陣爲例:

array=np.arange(1,10,1).reshape((3,3))
[[1 2 3]
 [4 5 6]
 [7 8 9]]

可以想象數組的每一個元素是存在以下小方框中,可以通過在x軸(axis=0)上的座標和在y軸(axis=1)上的座標來確定它們的位置。
在這裏插入圖片描述
如果還不懂可以通過下面的例子進行理解:

軸(axis)的使用案例

對於以下NumPy數組:

array = np.random.randint(0, 3, [3,2,4,5])
[[[[0 1 1 2 2]
   [0 0 2 0 2]
   [2 1 1 0 0]
   [1 1 2 1 0]]

  [[1 2 0 2 0]
   [2 0 1 1 2]
   [0 2 2 0 2]
   [1 2 2 0 0]]]


 [[[0 1 0 1 2]
   [0 1 0 0 1]
   [0 1 1 0 1]
   [2 2 0 1 2]]

  [[2 2 1 2 1]
   [1 1 1 2 2]
   [2 2 1 2 0]
   [0 0 1 2 1]]]


 [[[1 2 1 2 0]
   [1 1 1 1 0]
   [1 0 2 1 1]
   [0 0 2 1 0]]

  [[1 0 2 2 0]
   [2 0 0 1 1]
   [0 1 1 1 2]
   [0 2 1 2 0]]]]

它的維數爲4,它的shape爲[3,2,4,5]
如果我們要提取出數組中的某個位置的數,我們可以通過下面的語法來得到:

方括號中指定元素座標的變量我們可以將其看爲這個數組的下標array1,1,1,1array_{1,1,1,1},對於這個數組,他有4個軸,從左至右依次爲axis=0軸、axis=1軸、axis=2軸、axis=3軸。

對參數爲axis=2進行sum操作:

np.sum(array,axis=2)

會得到以下結果:

[[[6 3 4 3 4]
  [5 3 4 4 2]]

 [[8 6 3 2 2]
  [4 6 5 4 5]]

 [[4 6 2 4 4]
  [3 1 3 4 2]]]

這對每一個arrayx,y,i,z,i=0,1,2,3array_{x,y,i,z},i=0,1,2,3進行了求和,這個結果的shape爲(3, 2,4, 5)即(3, 2, 5)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章