python資料分析裡axis 0 1 行列定義為什麼每次都不同?

時間 2021-06-03 11:37:53

1樓:蠡測

以前看到這個問題的時候自己也不太懂,二維還能勉強理解,碰到高維的np陣列就完全是靠試了..

直觀記憶來說,我的辦法就是axis=n 就表示沿著shape裡第n維執行某個操作

ps: 這也適用於tensorflow的axis,不過tf的某些操作和np是不同的例如tf的concatenate只能接受list包裹的tensor,而np的concatenate可以接受乙個ndarray作為入參

從實現邏輯上看,其實這個axis=k,就是對資料的第k維用「冒號」索引,同時遍歷其他維度,由此得到一堆陣列,每個陣列都進行目標操作

例如, np.mean( arr, axis=0 ) == [np.mean(arr[:

, i])for i inrange( arr.shape[1] )]

numpy的例子我做了個實驗如下

二維效果

三維效果

pandas裡dataframe的axis其實和numpy的ndarray是一樣的,例子借用 @風水龍眼 的圖

同時他提到的 」0軸涉及上下運算和1軸涉及左右運算「 也是個非常好的記憶方式

2樓:舒緩的節奏

強烈推薦下面這篇博文,看了其它幾篇博文都沒看懂,看了這篇博文後,終於理解了axis引數。

下面這篇博文解釋得非常簡潔,將axis的值對應於陣列的層,並且以每層的陣列為單位解釋sum()函式的處理過程。很多博文都是以單個元素為單位,解釋為元素下標的變化方向,我感覺不是太好理解,而以每層的陣列為單位進行解釋則比較好理解。

Python之NumPy(axis=0/1/2...)的透徹理解——通過np.sum(axis=?)例項進行說明

3樓:Isco

首先請看一下官方幫助的解釋:

軸用來為超過一維的陣列定義的屬性,二維資料擁有兩個軸:第0軸沿著行的垂直往下,第1軸沿著列的方向水平延伸。

注意看,官方對於0和1的解釋是軸,也就是座標軸。而座標軸是有方向的,所以千萬不要用行和列的思維去想axis,因為行和列是沒有方向的,這樣想會在遇到不同的例子時感到困惑。

根據官方的說法,1表示橫軸,方向從左到右;0表示縱軸,方向從上到下。當axis=1時,陣列的變化是橫向的,而體現出來的是列的增加或者減少。我們拿圖形舉個例子:

我們有乙個正方形,假設是4x4的

接下來我們讓他橫向增加乙個單位,也就是長度+1,變成了乙個5x4的長方形

也就是說,對於這個4x4的正方形而言,當axis=1時,體現的是橫向的長度+1,而如果這是乙個4行4列的二維陣列同樣也是如此,但是體現出來是增加了一列。

所以其實axis的重點在於方向,而不是行和列。具體到各種用法而言也是如此。當axis=1時,如果是求平均,那麼是從左到右橫向求平均;如果是拼接,那麼也是左右橫向拼接;如果是drop,那麼也是橫向發生變化,體現為列的減少。

當考慮了方向,即axis=1為橫向,axis=0為縱向,而不是行和列,那麼所有的例子就都統一了。題主的疑問也就迎刃而解。

4樓:重心第一

我也有同樣的困惑,好凌亂。tf裡面的函式例如tf.nn.

softmax, tf.argmax中,axis=1表示按行處理。所以我拿小本本記下來各種函式的axis的定義。。。

隨時翻本子。。。

5樓:風水龍眼

剛好有同樣的疑惑,然後查閱了一些資料,包括呦呦鹿鳴提到的文章:Python Pandas與Numpy中axis引數的二義性

首先,我覺得這不是你的智商問題,也不是我的智商問題(笑),只是和作者的思路是否一致的問題。那麼我們試著去理解下作者的思路。

Pandas保持了Numpy對關鍵字axis的用法,用法在Numpy庫的詞彙表當中有過解釋:

軸用來為超過一維的陣列定義的屬性,二維資料擁有兩個軸:第0軸沿著行的垂直往下,第1軸沿著列的方向水平延伸。

如果簡單點來說,就是0軸匹配的是index, 涉及上下運算;1軸匹配的是columns, 涉及左右運算。

給你舉個栗子:

應該懂了吧?

一起加油哦!

python有哪些資料分析和資料展現的模組可以用?

馬雲 我來貢獻兩個 Python中著名的資料分析庫Panda Pandas庫是基於NumPy 的一種工具,該工具是為了解決資料分析任務而建立,也是圍繞著 Series 和 DataFrame 兩個核心資料結構展開的,其中Series 和 DataFrame 分別對應於一維的序列和二維的表結構。Pan...

用 Python 進行資料分析,不懂 Python,求合適的 Python 書籍或資料推薦?

digolds 關於Python基礎知識,下面這份教程就夠了,關於資料分析,你需要使用pandas 基礎篇https 高階篇https 實用篇https 鵝鵝鵝鵝鵝鵝 講實話,你主要需要的不是python,而是資料分析,你只不過使用python這個工具做資料分析,但是分析什麼內容不是python給你...

python 做資料分析速度快嗎?

find goo 你可以玩加速 語言級編譯加速器有numba,pypy,cython等 像矩陣運算,可以有很多方法加速,你用c c 不如借助工具,因為你用c c 寫的不一定是最優化演算法,可能導致效能變慢。Numpy NumPy系統是Python的一種開源的數值計算擴充套件。這種工具可用來儲存和處理...