Python中的axis參數(shù)的具體使用
在我們使用Python中的Numpy和Pandas進(jìn)行數(shù)據(jù)分析的時(shí)候,經(jīng)常會(huì)遇到一個(gè)讓人感到頭痛的參數(shù)——axis,本文讓我們換一個(gè)角度來重新認(rèn)識(shí)一下axis。
一、axis簡(jiǎn)介
通常情況下我們都會(huì)賦予axis參數(shù)“軸”的概念,對(duì)于常見的二維數(shù)據(jù)來說,我們有如下的表示形式:

對(duì)于這種常見的結(jié)構(gòu)來說,看上去很清晰,但是涉及到實(shí)際操作的時(shí)候就會(huì)變的難以理解,下面讓我們用色橫貨中的例子來學(xué)習(xí)一下。
二、不一樣的axis
對(duì)于axis=0
當(dāng)axis=0的時(shí)候,我們可以將數(shù)據(jù)和軸組成的整體看作是一串豎著擺放的糖葫蘆(棍垂直于水平面)示例如下圖所示:

此時(shí)圖中的[1,2,3]、[4,5,6]可以分別看作是糖葫蘆的兩個(gè)果子,而紅色的軸則表示穿著果子的棍(axis=0),對(duì)于此時(shí)的狀態(tài),每個(gè)果子是一個(gè)整體,當(dāng)進(jìn)行sum()加和操作時(shí),我們需要將兩個(gè)果子對(duì)應(yīng)位置的數(shù)據(jù)進(jìn)行相加而不是將每個(gè)果子進(jìn)行加和,最終可以得到結(jié)果[5,7,9]
import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]]) np.sum(a, axis=0) # 結(jié)果 # array([5, 7, 9])
當(dāng)進(jìn)行元素添加操作的時(shí)候,我們所做的事情就是在原有的糖葫蘆基礎(chǔ)上添加一個(gè)果子,果子的結(jié)構(gòu)也要像前兩個(gè)果子的結(jié)構(gòu)一樣,示例圖如下所示:

此時(shí)操作的示例代碼如下所示:
import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]]) np.append(a, [[7, 8, 9]], axis=0) # 結(jié)果 # array([[1, 2, 3], # [4, 5, 6], # [7, 8, 9]])
對(duì)于帶有參數(shù)axis=0刪除等操作也同添加的思想一樣,只要我們將其想象成在操作糖葫蘆的果子即可。
三、總結(jié)
當(dāng)axis=1的時(shí)候不難想到,我們要做的操作就是在一根水平擺放的糖葫蘆上進(jìn)行,所有操作的基本原理都和axis=0時(shí)相同。
補(bǔ)充:python中某些函數(shù)axis參數(shù)的理解
總結(jié)為一句話:設(shè)axis=i,則numpy沿著第i個(gè)下標(biāo)變化的方向進(jìn)行操作。
當(dāng)然,這個(gè)i是從0開始數(shù)的,作為程序員的你一定不會(huì)搞錯(cuò)。
axis意為“軸”,它指定了函數(shù)在張量(矩陣、等等)上進(jìn)行操作的方向。
例如有一個(gè)ndarray,名叫A,A.shape=(3,8,5,7)。
那么np.sum(A, axis=2)計(jì)算的結(jié)果的shape就是(3,8,7)。
假設(shè)這個(gè)shape是(3,8,7)的ndarray變量名為B,那么實(shí)際上:
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)
預(yù)期輸出為:
A.shape= (3, 8, 5, 7)
B.shape= (3, 8, 7)
到此這篇關(guān)于Python中的axis參數(shù)的具體使用的文章就介紹到這了,更多相關(guān)Python axis參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Django+uwsgi+Nginx上線最佳實(shí)戰(zhàn)
這篇文章主要介紹了Django+uwsgi+Nginx上線最佳實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
Python如何計(jì)算語句執(zhí)行時(shí)間
這篇文章主要介紹了Python如何計(jì)算語句執(zhí)行時(shí)間,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
這篇文章主要介紹了PyQt5.6+pycharm配置以及pyinstaller生成exe,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
一文詳解Python如何處理函數(shù)調(diào)用超時(shí)問題
在Python開發(fā)中,我們經(jīng)常會(huì)遇到需要控制函數(shù)執(zhí)行時(shí)間的場(chǎng)景,本文將深入探討Python中處理函數(shù)調(diào)用超時(shí)的幾種方法,感興趣的小伙伴可以參考一下2025-04-04
python基于Opencv實(shí)現(xiàn)人臉口罩檢測(cè)
最近嘗試做一個(gè)python基于Opencv實(shí)現(xiàn)人臉口罩檢測(cè),記錄一下過程,稍微整理精簡(jiǎn)一下做下分享,需要的小伙伴可以參考下2021-06-06
PyQt5 QTableView設(shè)置某一列不可編輯的方法
今天小編就為大家分享一篇PyQt5 QTableView設(shè)置某一列不可編輯的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
深入探究Python如何實(shí)現(xiàn)100個(gè)并發(fā)請(qǐng)求
在Web開發(fā)和數(shù)據(jù)抓取等領(lǐng)域,并發(fā)請(qǐng)求是提高效率和性能的重要手段,本文將深入探討如何使用Python實(shí)現(xiàn)100個(gè)并發(fā)請(qǐng)求,感興趣的小伙伴可以了解下2025-02-02
pyautogui自動(dòng)化控制鼠標(biāo)和鍵盤操作的步驟
這篇文章主要介紹了pyautogui自動(dòng)化控制鼠標(biāo)和鍵盤操作的步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

