NumPy對於軸(axis)和秩(rank)的理解


 

 
  • 軸(axis):保護數據的維度,數組最外圍的維度axis=0
    • 矩陣(二維數組)
      • 第一軸(axis=0)是矩陣的列操作
      • 第二軸(axis=1)是矩陣的行操作
    • 三維數組
      • 第三軸(axis=2)為圖像矩陣的通道
  • 秩(rank):軸的數量,即數組的維度

上面的看不懂不要急,看看例子就會懂了

np.sum(array, axis=None)函數表示對數組array進行求和(默認axis=None),可通過修改參數axis達到對數組array不同軸的操作。
eg:np.sum(a2,axis=0)對數組a2的第一軸(axis=0)求和

  • 對於二維數組a2(3,4)

a2=np.arange(12).reshape(3,4) a2 Out: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) np.sum(a2,axis=0) Out: array([12, 15, 18, 21]) # ps:12=0+4+8, 15=1+5+9, 18=2+6+10, 21=3+7+11 np.sum(a2,axis=1) Out: array([ 6, 22, 38]) # ps:6=0+1+2+3, 22=4+5+6+7, 38=8+9+10+11 

總結一下

  • axis=0的結果為(axis, 4) 大小為四的一維數組,值為(0, i) + (1, i) + (2, i)
  • axis=1的結果為(3, axis) 大小為三的一維數組,值為(i, 0) + (i, 1) + (i, 2) + (i, 3)
    它的秩的值為2(二維數組,共有兩個軸)
  • 對於三維數組 a(2,3,4)

array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]]) np.sum(a,axis=0) # 對a數組第一軸求和 Out: array([[12, 14, 16, 18], [20, 22, 24, 26], [28, 30, 32, 34]]) # ps:12=0+12,14=1+13,16=2+14,18=3+15 # 20=4+16,... # 28=8+28, ... np.sum(a,axis=1) # 對a數組第二軸求和 Out: array([[12, 15, 18, 21], [48, 51, 54, 57]]) # ps:12= 0+ 4+ 8, 15= 1+ 5+ 9, 18= 2+ 6+10, 21= 3+ 7+11 # 48=12+16+20, ... np.sum(a,axis=2) Out: array([[ 6, 22, 38], [54, 70, 86]]) # ps: 6= 0+ 1+ 2+ 3, 22= 4+ 5+ 6+ 7, 38= 8+ 9+10+11 # 54=12+13+14+15, ... 

總結一下

    • axis=0的結果為(axis, 3, 4) 三行四列的矩陣,值為(0, i, j) + (1, i, j)
    • axis=1的結果為(2, axis, 4) 二行四列的矩陣,值為(i, 0, j) + (i, 1, j) + (i, 2, j)
    • axis=2的結果為(2, 3, axis) 二行三列的矩陣,值為(i, j, 0) + (i, j, 1) + (i, j, 2) + (i, j, 3)
      它的秩的值為3(共有三個軸,維度為三)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM