Axis理解
之前的課程中,為了方便大家理解,我們說axis=0
代表的是行,axis=1
代表的是列。但其實不是這么簡單理解的。這里我們專門用一節來解釋一下這個axis
軸的概念。
簡單來說, 最外面的括號代表着 axis=0,依次往里的括號對應的 axis 的計數就依次加 1。什么意思呢?下面再來解釋一下。
最外面的括號就是axis=0
,里面兩個子括號axis=1
。
操作方式:如果指定軸進行相關的操作,那么他會使用軸下的每個直接子元素的第0個,第1個,第2個...分別進行相關的操作。
現在我們用剛剛理解的方式來做幾個操作。比如現在有一個二維的數組:
x = np.array([[0,1],[2,3]])
-
求
x
數組在axis=0
和axis=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]
了。 -
用
np.max
求axis=0
和axis=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])
-
用
np.delete
在axis=0
和axis=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
進行刪除,那么會把第一列的數據刪掉。
三維以上數組:
按照之前的理論,如果以上數組按照axis=0
的方式進行相加,得到的結果如下:
如果是按照axis=1
的方式進行相加,得到的結果如下:
總結:
1、最外面的括號代表着 axis=0,依次往里的括號對應的 axis 的計數就依次加 1
2、操作方式:如果指定軸進行相關的操作,那么他會使用軸下的每個直接子元素的第0個,第1個,第2個...分別進行相關的操作。
3、 np.delete,是直接刪除指定軸下的第幾個直接子元素。