Python中的axis參數的具體使用

在我們使用Python中的Numpy和Pandas進行數據分析的時候,經常會遇到一個讓人感到頭痛的參數——axis,本文讓我們換一個角度來重新認識一下axis。

一、axis簡介

通常情況下我們都會賦予axis參數“軸”的概念,對於常見的二維數據來說,我們有如下的表示形式:

在這裡插入圖片描述

對於這種常見的結構來說,看上去很清晰,但是涉及到實際操作的時候就會變的難以理解,下面讓我們用色橫貨中的例子來學習一下。

二、不一樣的axis

對於axis=0

當axis=0的時候,我們可以將數據和軸組成的整體看作是一串豎著擺放的糖葫蘆(棍垂直於水平面)示例如下圖所示:

在這裡插入圖片描述

此時圖中的[1,2,3]、[4,5,6]可以分別看作是糖葫蘆的兩個果子,而紅色的軸則表示穿著果子的棍(axis=0),對於此時的狀態,每個果子是一個整體,當進行sum()加和操作時,我們需要將兩個果子對應位置的數據進行相加而不是將每個果子進行加和,最終可以得到結果[5,7,9]

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
np.sum(a, axis=0)

# 結果
# array([5, 7, 9])

當進行元素添加操作的時候,我們所做的事情就是在原有的糖葫蘆基礎上添加一個果子,果子的結構也要像前兩個果子的結構一樣,示例圖如下所示:
在這裡插入圖片描述
此時操作的示例代碼如下所示:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
np.append(a, [[7, 8, 9]], axis=0)

# 結果
# array([[1, 2, 3],
#        [4, 5, 6],
#        [7, 8, 9]])

對於帶有參數axis=0刪除等操作也同添加的思想一樣,隻要我們將其想象成在操作糖葫蘆的果子即可。

三、總結

當axis=1的時候不難想到,我們要做的操作就是在一根水平擺放的糖葫蘆上進行,所有操作的基本原理都和axis=0時相同。

補充:python中某些函數axis參數的理解

總結為一句話:設axis=i,則numpy沿著第i個下標變化的方向進行操作。

當然,這個i是從0開始數的,作為程序員的你一定不會搞錯。

axis意為“軸”,它指定瞭函數在張量(矩陣、等等)上進行操作的方向。
例如有一個ndarray,名叫A,A.shape=(3,8,5,7)。
那麼np.sum(A, axis=2)計算的結果的shape就是(3,8,7)。
假設這個shape是(3,8,7)的ndarray變量名為B,那麼實際上:

B[i][j][k]=A[i][j][0][k]+A[i][j][1][k]+A[i][j][2][k]+A[i][j][3][k]+A[i][j][4][k]

以下代碼你可以自己跑一下試試:

import numpy as np

A=np.random.randn(3,8,5,7)
print("A.shape=",A.shape)

B=np.sum(A,axis=2)
print("B.shape=",B.shape)

預期輸出為:

A.shape= (3, 8, 5, 7)
B.shape= (3, 8, 7)

到此這篇關於Python中的axis參數的具體使用的文章就介紹到這瞭,更多相關Python axis參數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: