美文网首页我爱编程
numpy中axis参数说明

numpy中axis参数说明

作者: yoshino | 来源:发表于2018-07-24 15:25 被阅读73次

axis=i,即沿着数组第i个下标的变化方向进行操作。
这里我们用numpy.sum(axis=i)进行说明

举例说明:

k = np.reshape(np.arange(24), [3, 2, 4])
print(k)

[[[ 0  1  2  3]
  [ 4  5  6  7]]

 [[ 8  9 10 11]
  [12 13 14 15]]

 [[16 17 18 19]
  [20 21 22 23]]]

这是一个(3,2,4)维的矩阵,那么对于每个元素,均可用3个下标i,j,k表示,如:

k[i][j][k]
k[0][0][0]=0
k[0][0][3]=3
k[0][1][0]=4
k[1][0][0]=8
k[2][1][3]=23
# 坐标轴的取值范围
i={0,1,2}
j={0,1}
k={0,1,2,3}

求和操作是降维操作,k有三个轴,分别按照这三个轴进行求和

axis=0

axis=0,即沿着第0个坐标i下标变化的方向进行求和,第0轴降维,得到的shape=(2,4)

print(k.sum(axis=0))
print(k.sum(axis=0).shape)

[[24 27 30 33]
 [36 39 42 45]]
(2, 4)

下面我们进行手算,沿着第0个坐标遍历求和:

# 沿着第三个坐标 k=0,1,2,3,再沿着第二个坐标j=0,1,共计算8次
# 坐标轴的取值范围
# i={0,1,2}
# j={0,1}
# k={0,1,2,3}

k[0][0][0]+k[1][0][0]+k[2][0][0]=24
k[0][0][1]+k[1][0][1]+k[2][0][1]=27
k[0][0][2]+k[1][0][2]+k[2][0][2]=30
k[0][0][3]+k[1][0][3]+k[2][0][3]=33

k[0][1][0]+k[1][1][0]+k[2][1][0]=36
k[0][1][1]+k[1][1][1]+k[2][1][1]=39
k[0][1][2]+k[1][1][2]+k[2][1][2]=42
k[0][1][3]+k[1][1][3]+k[2][1][3]=45

sum = np.reshape(np.array([24, 27, 30, 33, 36, 39, 42, 45]), (2, 4))
sum = array([[24, 27, 30, 33],
             [36, 39, 42, 45]])

axis=1

axis=1,即沿着第1个坐标下标j变化的方向进行求和,第1轴降维,得到的shape=(3,4)

print(k.sum(axis=1))
print(k.sum(axis=1).shape)

[[ 4  6  8 10]
 [20 22 24 26]
 [36 38 40 42]]
(3, 4)

这时,我们沿着第1个坐标j进行手动求和:

# 坐标轴的取值范围
# i={0,1,2}
# j={0,1}
# k={0,1,2,3}

k[0][0][0]+k[0][1][0]=4
k[0][0][1]+k[0][1][1]=6
k[0][0][2]+k[0][1][2]=8
k[0][0][3]+k[0][1][3]=10

k[1][0][0]+k[1][1][0]=20
k[1][0][1]+k[1][1][1]=22
k[1][0][2]+k[1][1][2]=24
k[1][0][3]+k[1][1][3]=26

k[2][0][0]+k[2][1][0]=36
k[2][0][1]+k[2][1][1]=38
k[2][0][2]+k[2][1][2]=40
k[2][0][3]+k[2][1][3]=42

sum = np.reshape(np.array([4, 6, 8, 10, 20, 22, 24, 26, 36, 38, 40, 42]), (3, 4))
sum = array([[ 4,  6,  8, 10],
             [20, 22, 24, 26],
             [36, 38, 40, 42]])

axis=2

axis=2,即沿着第2个坐标下标k变化的方向进行求和,第2轴降维,得到的shape=(3,2)

print(k.sum(axis=2))
print(k.sum(axis=2).shape)

[[ 6 22]
 [38 54]
 [70 86]]
(3, 2)

还是一样的,我们沿着k坐标的变化进行计算:

# 坐标轴的取值范围
# i={0,1,2}
# j={0,1}
# k={0,1,2,3}

k[0][0][0]+k[0][0][1]+k[0][0][2]+k[0][0][3]=6
k[0][1][0]+k[0][1][1]+k[0][1][2]+k[0][1][3]=22

k[1][0][0]+k[1][0][1]+k[1][0][2]+k[1][0][3]=38
k[1][1][0]+k[1][1][1]+k[1][1][2]+k[1][1][3]=54

k[2][0][0]+k[2][0][1]+k[2][0][2]+k[2][0][3]=70
k[2][1][0]+k[2][1][1]+k[2][1][2]+k[2][1][3]=86

sum = np.reshape(np.array([6, 22, 38, 54, 70, 86]), (3, 2))
sum = array([[ 6, 22],
             [38, 54],
             [70, 86]])

相关文章

  • numpy中axis参数说明

    axis=i,即沿着数组第i个下标的变化方向进行操作。这里我们用numpy.sum(axis=i)进行说明 举例说...

  • numpy.cumsum()用法

    numpy.cumsum 函数参数有numpy.cumsum(a, axis=None, dtype=None, ...

  • Pandas常见困惑问题汇总

    asix参数含义 原文请见:Python Pandas与Numpy中axis参数的二义性从例子入手: df.mea...

  • numpy的axis

    这是别人的理解 原文Numpy中有许多函数都带有一个参数:axis(对应于pytorch中的dim参数),用来指定...

  • 原创|Python|cumsum()

    一、参数numpy.cumsum(a, axis=None, dtype=None, out=None)函数的功能...

  • Numpy中的axis是什么?

    Numpy中的axis主要指明沿着行(axis=0),还是列(axis=1)方向进行操作 axis 0 (沿着行方...

  • python释疑

    numpy模块 sum函数的参数(axis)axis 代表矩阵轴数。对于一维矩阵,0:行方向。对于二维矩阵,0:列...

  • numpy模块中axis

    参考文章 numpy模块之axis 以下是文章正文 axis的作用 numpy是python进行科学计算必不可少的...

  • Numpy中的axis

    抽象的说,axis就是把n维矩阵串成n+1维矩阵的那条线。如图,箭头就是一个轴。axis参数表明了沿着箭头方向进行...

  • numpy中的axis

    首先参考这个,其次记录一些个人的理解。如下,构造一个三维数组 当axis = 0时,第一个元素 = (a[0][0...

网友评论

    本文标题:numpy中axis参数说明

    本文链接:https://www.haomeiwen.com/subject/stxymftx.html