Axis理解


Axis理解

之前的課程中,為了方便大家理解,我們說axis=0代表的是行,axis=1代表的是列。但其實不是這么簡單理解的。這里我們專門用一節來解釋一下這個axis軸的概念。

簡單來說, 最外面的括號代表着 axis=0,依次往里的括號對應的 axis 的計數就依次加 1。什么意思呢?下面再來解釋一下。
image

最外面的括號就是axis=0,里面兩個子括號axis=1
操作方式:如果指定軸進行相關的操作,那么他會使用軸下的每個直接子元素的第0個,第1個,第2個...分別進行相關的操作。

現在我們用剛剛理解的方式來做幾個操作。比如現在有一個二維的數組:

x = np.array([[0,1],[2,3]])
  1. x數組在axis=0axis=1兩種情況下的和:

     >>> x.sum(axis=0)
     array([2, 4])
    

    為什么得到的是[2,4]呢,原因是我們按照axis=0的方式進行相加,那么就會把最外面軸下的所有直接子元素中的第0個位置進行相加,第1個位置進行相加...依此類推,得到的就是0+2以及2+3,然后進行相加,得到的結果就是[2,4]

     >>> x.sum(axis=1)
     array([1, 5])
    

    因為我們按照axis=1的方式進行相加,那么就會把軸為1里面的元素拿出來進行求和,得到的就是0,1,進行相加為1,以及2,3進行相加為5,所以最終結果就是[1,5]了。

  2. np.maxaxis=0axis=1兩種情況下的最大值:

>>> np.random.seed(100)
>>> x = np.random.randint(0,10,size=(3,5))
>>> x.max(axis=0)
array([8, 8, 3, 7, 8])

因為我們是按照axis=0進行求最大值,那么就會在最外面軸里面找直接子元素,然后將每個子元素的第0個值放在一起求最大值,將第1個值放在一起求最大值,以此類推。而如果axis=1,那么就是拿到每個直接子元素,然后求每個子元素中的最大值:

>>> x.max(axis=1)
array([8, 5, 8])
  1. np.deleteaxis=0axis=1兩種情況下刪除元素:

     >>> np.delete(x,0,axis=0)
     array([[2, 3]])
    

    np.delete是個例外。我們按照axis=0的方式進行刪除,那么他會首先找到最外面的括號下的直接子元素中的第0個,然后刪掉,剩下最后一行的數據。

     >>> np.delete(x,0,axis=1)
     array([[1],
            [3]])
    

    同理,如果我們按照axis=1進行刪除,那么會把第一列的數據刪掉。

三維以上數組:

image

按照之前的理論,如果以上數組按照axis=0的方式進行相加,得到的結果如下:
image

如果是按照axis=1的方式進行相加,得到的結果如下:
image

總結:

1、最外面的括號代表着 axis=0,依次往里的括號對應的 axis 的計數就依次加 1

2、操作方式:如果指定軸進行相關的操作,那么他會使用軸下的每個直接子元素的第0個,第1個,第2個...分別進行相關的操作。

3、 np.delete,是直接刪除指定軸下的第幾個直接子元素。


免責聲明!

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



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