日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

搞清axis的含义,这一篇就够了!

發布時間:2023/12/13 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 搞清axis的含义,这一篇就够了! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • axis的含義
  • 旁門左道式理解
    • 二維數組中的axis
    • 三維數組中的axis
  • 正規理解


axis的含義

在自己分析之前先擺上官方關于多維數組中axis的值的定義:

axis = 0,表示第一個維度

axis = 1,表示第二個維度

axis = -1,表示最后一個維度 【二維數組里axis=1和axis=-1等價】

以下先分析二維數組里axis=1和axis=0的區別,再分析三維數組里axis=-1,0,1的區別

PS:可以嘗試先看看正規理解,如果能理解就不用看旁門左道式理解了~


旁門左道式理解

二維數組中的axis

我們先了解一下關于axis的一些知識~

axis用來為超過一維的數組定義屬性。二維數據擁有兩個軸:第0軸沿著行的方向垂直向下,第1軸沿著列的方向水平延申。1表示橫軸,方向從左到右;0表示縱軸,方向從上到下。當axis=1時,數組的變化是橫向的,體現出列的增加或者減少。反之,當axis=0時,數組的變化是縱向的,體現出行的增加或減少。

結合例子來看:


根據第二張圖我們來理解axis,簡單來講,0軸沿著行的方向垂直向下豎著加,1軸沿著列的方向水平延申橫著加


三維數組中的axis

摸著良心講二維數組中axis真的是很好理解,三維數組中axis難以理解的地方在于,三維數組的[]太多了!所以在理解的時候很容易懵。話不多說,進入正題~

先看一組例子:

a = np.array([[[0, 1, 44], [3, 4, 25], [6, 7, 88]],[[9, 50, 11], [12, 73, 14], [15, 66, 17]],[[78, 19, 20], [91, 22, 23], [84, 25, 26]]]) print("a=", a) b = np.max(a, axis=0) print("b=", b)

運行結果:

a= [[[ 0 1 44][ 3 4 25][ 6 7 88]][[ 9 50 11][12 73 14][15 66 17]][[78 19 20][91 22 23][84 25 26]]] b= [[78 50 44][91 73 25][84 66 88]]

把a = np.max(b, axis=0) 改成a = np.max(b, axis=1),則運行結果如下:

a= [[[ 0 1 44][ 3 4 25][ 6 7 88]][[ 9 50 11][12 73 14][15 66 17]][[78 19 20][91 22 23][84 25 26]]] b= [[ 6 7 88][15 73 17][91 25 26]]

把a = np.max(b, axis=0) 改成a = np.max(b, axis=-1),則運行結果如下:

a= [[[ 0 1 44][ 3 4 25][ 6 7 88]][[ 9 50 11][12 73 14][15 66 17]][[78 19 20][91 22 23][84 25 26]]] b= [[44 25 88][50 73 66][78 91 84]]

用第一個維度、第二個維度、最后一個維度來理解axis是很抽象的,所以本文用去掉[]的方式來幫助大家理解axis

三維數組是這樣表示出來的
[[[]
[]
[]]

[[]
[]
[]]

[[]
[]
[]]]

而對數組進行操作是根據[]劃分的范圍來決定的

axis = 0,表示去掉[]之后進行max操作

去掉之后長這樣:

[[ 0 1 44][ 3 4 25][ 6 7 88]][[ 9 50 11][12 73 14][15 66 17]][[78 19 20][91 22 23][84 25 26]]

也就是把一個三維數組分成了三個二維數組,則在找出最大值時(執行max時),是將三個二維數組每個相同位置的元素進行比較,最終取三個之中最大的作為該位置的最終值
【0,9,78中取78,1,50,19中取50…以此類推】

b= [[78 50 44][91 73 25][84 66 88]]

axis = 1,表示去掉[]之后進行max操作

去掉之后長這樣:

[[ 0 1 44][ 3 4 25][ 6 7 88][ 9 50 11][12 73 14][15 66 17][78 19 20][91 22 23][84 25 26]]

也就變成了三個元素為一個“小組”的9個小組,從前三個小組每個相同位置的元素中選出最大值作為最終結果里第一行對應位置的最終值;從中間三個小組每個相同位置的元素中選出最大值作為最終結果里第二行對應位置的最終值;從后三個小組每個相同位置的元素中選出最大值作為最終結果里第三行對應位置的最終值。
【以中間三組為例:9,12,15中選取15賦值到第二行第一個位置;50,73,66中選取73第二行第二個位置;11,14,17中選取17第二行第三個位置】

b= [[ 6 7 88][15 73 17][91 25 26]]

axis = -1,表示去掉[]之后進行max操作

去掉之后長這樣:

[[ 0 1 443 4 256 7 88][ 9 50 1112 73 1415 66 17][78 19 2091 22 2384 25 26]]

可以看出每個元素現在已經“各自為戰”了,不同于之前的各個二維數組相同位置的元素每個小組相同位置的元素;他們只能以元素的身份和別的元素去比較。

第一行的元素比較結果作為第一行第一列的最終值,第二行的元素比較結果作為第一行第二列的最終值……第四行的元素比較結果作為第二行第一列的最終值……以此類推。

【78,19,20中取78賦值到第三行第一個位置,91,22,23中取91賦值到第三行第二個位置,84,25,26中取84賦值到第三行第三個位置】

b= [[44 25 88][50 73 66][78 91 84]]

正規理解

其實用維度理解挺好理解的

如果用x,y,z表示三維數組的三個維度

axis = 0時,確定最終二維數組的yi,zi時,也就是(x0,yi,zi)、(x1,yi,zi)、(x2,yi,zi)三個點的值作比較,取最大的放到(yi,zi)。

【確定(y1,z1)時,比較(x0,y1,z1)=4、(x1,y1,z1)=73、(x2,y1,z1)=22】

a= [[[ 0 1 44][ 3 4 25][ 6 7 88]][[ 9 50 11][12 73 14][15 66 17]][[78 19 20][91 22 23][84 25 26]]] b= [[78 50 44][91 73 25][84 66 88]]

axis = 1時,確定最終二維數組的xi,zi時,也就是(xi,y0,zi)、(xi,y1,zi)、(xi,y2,zi)三個點的值作比較,取最大的放到(xi,zi)。

【確定(x1,z1)時,比較(x1,y0,z1)=50、(x1,y1,z1)=73、(x1,y2,z1)=66】

a= [[[ 0 1 44][ 3 4 25][ 6 7 88]][[ 9 50 11][12 73 14][15 66 17]][[78 19 20][91 22 23][84 25 26]]] b= [[ 6 7 88][15 73 17][91 25 26]]

axis = -1時,確定最終二維數組的xi,yi時,也就是(xi,yi,z0)、(xi,yi,z1)、(xi,yi,z2)三個點的值作比較,取最大的放到(xi,yi)。

【確定(x1,y1)時,比較(x1,y1,z0)=12、(x1,y1,z1)=73、(x1,y1,z2)=14】

a= [[[ 0 1 44][ 3 4 25][ 6 7 88]][[ 9 50 11][12 73 14][15 66 17]][[78 19 20][91 22 23][84 25 26]]] b= [[44 25 88][50 73 66][78 91 84]] 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的搞清axis的含义,这一篇就够了!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。