填坑之作 numpy陣列axis含義

2021-09-21 07:17:25 字數 1309 閱讀 1754

因為最近在用tf裡邊的各種tensor的不同axis操作,搞得頭很疼,所以用numpy裡邊的axis的操作來看看這個axis的含義

首先定義乙個np,shape為(2,2,2)

a=np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
print出來是

[[[1 2]

[3 4]]

[[5 6]

[7 8]]]

接下來分析每個數字的座標

1為(0,0,0),2為(0,0,1),3為(0,1,0),4為(0,1,1),5為(1,0,0),6為(1,0,1),7為(1,1,0),8為(1,1,1)

接下來進行np.sum操作

b=np.sum(a,axis=(0))
輸出結果為

[[ 6  8]

[10 12]]

可以看到結果是乙個shape為(2,2)的tensor

其中6=1(0,0,0)+5(1,0,0),8=2(0,0,1)+6(1,0,1),10=3(0,1,0)+7(1,1,0),12=4(0,1,1)+8(1,1,1)

可以看到,以此相加的兩個數,最後兩維座標相同,第一維度座標不同

b=np.sum(a,axis=(0,1))
輸出結果為

[16 20]

可以看到結果是乙個shape為(2)的tensor

其中16=1(0,0,0)+3(0,1,0)+5(1,0,0)+7(1,1,0),20=2(0,0,1)+4(0,1,1)+6(1,0,1)+8(1,1,1)

相加的數,最後一維座標相同,前兩維座標不同

b=np.sum(a,axis=(0,1,2))
輸出結果為

這次是沒有固定維度座標,直接全部相加

b=np.sum(a,axis=(1))
輸出結果為

[[ 4  6]

[12 14]]

其中4=1(0,0,0)+3(0,1,0),6=2(0,0,1)+4(0,1,1),12=5(1,0,0)+7(1,1,0),146(1,0,1)+8(1,1,1)

最終得到結論,np.sum中的引數axis為進行操作的維度,沒有在axis中輸入的維度為固定的維度,使用固定維度相同的數進行操作

填坑之作 python打包

要把python打包成exe 使用pyinstaller 命令 pyinstaller f w py 1 出現recursionerror maximum recursion depth exceeded錯誤 解決方法 在 filename.spec 檔案頭新增下面語句 import sys sys...

numpy陣列計算中的axis

numpy陣列計算中,經常要求按照某個軸計算,如axis 0 1.對於高維陣列,究竟是在哪個維度上計算呢?其實axis中的0,1,2指的就是陣列中資料塊的層級關係。0就是最外層,指的是從最外層進入陣列後的各個子資料塊 1就是就是進入前面的各個子資料塊後的更內層資料塊。以如下二維陣列為例,arr np...

numpy中多維陣列的軸(axis)

多維陣列的軸 axis 是和該陣列的size 或者shape 的元素是相對應的 np.random.seed 123 x np.random.randint 0,5,3,2,2 print x 5 2 4 2 1 3 2 3 1 1 0 1 x.sum axis 0 array 7,6 6,6 x....