在選定特定的軸後,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的值
... ...
'''
所以在求二維行和時,列為主要變化量 sum([i,:]),故用sum(axis=1)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=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 也...