numpy中sum 中axis引數的問題

2021-07-31 22:54:32 字數 2909 閱讀 2793

在選定特定的軸後,sum得到的值維度降低一維

axis的值是shape返回元組的索引,

比如axis=0 是 最高維度 最外層括號

axis = 1:是第二層括號

axis = n是最內層括號 <==> axis =-1

# sum() axis=n 表示以第n維為主元

#以二陣列為例:

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

out[45]:

array([[1, 2, 3, 4],

[5, 6, 7, 8]])

a.sum(axis=1) # 返回一維

#主要變的是列:

#看索引值

''' 行為0時,列為0,1,2 相加的和為 位置 0的值

行為1時,列為0,1,2 相加的和為 位置 1的值

行為2時,列為0,1,2 相加的和為 位置 2的值

也就是: add a[i,j] for j in range(0,a.shape[1])

'''#array([10, 26])

# 計算結果與a.sum(axis=1) 相同

ls =

for i in range(0,a.shape[0]):

'''同樣當axis=0時,主要變化的是行

列為0時,行為0,1,2 相加的和為 位置 0的值

... ...

'''

x= np.array([[[ 0,  1,  2],

[ 3, 4, 5],

[ 6, 7, 8]],

[[ 9, 10, 11],

[12, 13, 14],

[15, 16, 17]],

[[18, 19, 20],

[21, 22, 23],

[24, 25, 26]]])

x.shape #(3, 3, 3)

axis = 0

#得到的值為二維

for j in range(0, x.shape[1]):

for k in range(0, x.shape[2]):

print( "element = ", (j,k), " ", [ x[i,j,k] for i in range(0, x.shape[0]) ])

...#最高維為主要變化的量,

#第二維和第三維為 0, 0時,第一維為0,1,2 相加的和為 位置 0,0的值

#第二維和第三維為 0, 0時,第一維為0,1,2 相加的和為 位置 0, 1的值

#第二維和第三維為 0, 0時,第一維為0,1,2 相加的和為 位置 0, 2的值

'''element = (0, 0) [0, 9, 18] #sum is 27

element = (0, 1) [1, 10, 19] #sum is 30

element = (0, 2) [2, 11, 20]

element = (1, 0) [3, 12, 21]

element = (1, 1) [4, 13, 22]

element = (1, 2) [5, 14, 23]

element = (2, 0) [6, 15, 24]

element = (2, 1) [7, 16, 25]

element = (2, 2) [8, 17, 26]

'''x.sum(axis=0)

array([[27, 30, 33],

[36, 39, 42],

[45, 48, 51]])

#axis = 1

for i in range(0, x.shape[0]):

for k in range(0, x.shape[2]):

print( "element = ", (i,k), " ", [ x[i,j,k] for j in range(0, x.shape[1]) ])

#第一維和第三維為 0, 0時,第二維為0,1,2 相加的和為 位置 0,0的值

#第一維和第三維為 0, 0時,第二維為0,1,2 相加的和為 位置 0, 1的值

#第一維和第三維為 0, 0時,第二維為0,1,2 相加的和為 位置 0, 2的值

'''element = (0, 0) [0, 3, 6] #sum is 9

element = (0, 1) [1, 4, 7]

element = (0, 2) [2, 5, 8]

element = (1, 0) [9, 12, 15]

element = (1, 1) [10, 13, 16]

element = (1, 2) [11, 14, 17]

element = (2, 0) [18, 21, 24]

element = (2, 1) [19, 22, 25]

element = (2, 2) [20, 23, 26]

'''x.sum(0), x.sum(1), x.sum(2)

(array([[27, 30, 33],

[36, 39, 42],

[45, 48, 51]]),

array([[ 9, 12, 15],

[36, 39, 42],

[63, 66, 69]]),

array([[ 3, 12, 21],

[30, 39, 48],

[57, 66, 75]]))`

所以在求二維行和時,列為主要變化量 sum([i,:]),故用sum(axis=1)

同理在求二維列和時,行為主要變化量 sum([:,i]), 故用sum(axis=0)

python中sum函式中axis引數

格式 sum a,axis 0 或者是a.sum axis 1 sum預設的axis 0 就是普通的相加 而當加入axis 1以後就是將乙個矩陣的每一行向量相加。舉例 1.import numpy as np np.sum 0,1 2 2,1 3 axis 1 結果 array 3,6 a np.a...

理解numpy中的axis

對於m個元素一維陣列a,因為只有乙個軸,所以axis只能為0,和預設值效果相同,觀察的是0軸上0,1,i,m點對應的元素。產生的新集合就乙個元素。舉例 對於mxn的二維陣列 a,axis可以取值0或1。axis 0 相當於平面座標的y軸,變化的是 行 即觀察每一列不同行的元素。產生的新集合,其元素的...

numpy中axis引數理解

在學習axis時,其為0或者為1的時候,到底是行還是列。初學的時候感覺好像numpy和python中不一樣,0有的時候代表行,有的時候代表列,經常犯錯。其實是自己對其理解有誤。下面開始來講解。numpy當中axis的值表示的是這個多維陣列維度的下標,比如有乙個二維陣列a,a的shape是 5,6 也...