關於numpy中axis的理解


今天在復習PCA的過程中,發現自己對numpy多維數組的“軸”理解的不是很好,借此機會來總結一下。

網上有很多博客都寫的是二維數組,axis=0表示第一維度,即行。axis=1表示第二維度,列。但是設計到多維就有點不知所錯。

舉個網上存在的例子幫助理解:

>> data2
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]]])
>> data2.shape
(2L, 3L, 4L)

  下面是不同axis的情況:

data2.sum(axis=0)
Out[49]: 
array([[12, 14, 16, 18],
       [20, 22, 24, 26],
       [28, 30, 32, 34]])
 
 
data2.sum(axis=1)
Out[51]: 
array([[12, 15, 18, 21],
       [48, 51, 54, 57]])
 
data2.sum(axis=2)
Out[52]: 
array([[ 6, 22, 38],
       [54, 70, 86]])

  

這里紅色是axis=0的相加情況,黃色是axis=1,藍色axis=2

所以如果一個多維數組的 shape 是 (a1, a2, a3, a4), 那么延軸0計算最后的數組shape 是 (a2, a3, a4), 延軸1計算最后的數組shape是 (a1, a3, a4)。

axis =0還是代表shape0,只不過axis=0的一些計算如,np.sum(axis=0)是沿着這個軸計算其他軸的,也就是除了這個軸以外其他軸都會計算

 

參考鏈接:https://blog.csdn.net/zxyhhjs2017/article/details/81428220

 


免責聲明!

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



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