对numpy axis(轴)的理解

之前对numpy函数中axis参数所指向的数据一直无法完全理解,但是接触过跨度的概念之后,对axis参数所指向的数据才有所理解。

以numpy.sum函数为例,初始化一个维度为2*3*4维的全一矩阵,代码如下:

arr = np.ones((2, 3, 4))

结果如下:

array([[[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]],

       [[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]]])

所谓沿着某个轴计算就是将这个轴上的所有元素进行相应计算,以numpy sum函数为例,对于axis=0的情况,就是将0轴上的元素依次相加,其他轴的元素维度保持不变,在上例中0轴上共有两个元素,分别为arr[0], arr[1],数据如下:

array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])

对这两个元素相加,结果如下:

>>> arr[0] + arr[1]
array([[2., 2., 2., 2.],
       [2., 2., 2., 2.],
       [2., 2., 2., 2.]])

接下来用sum函数对结果进行验证。

>>> np.sum(arr, axis=0)
array([[2., 2., 2., 2.],
       [2., 2., 2., 2.],
       [2., 2., 2., 2.]])

结果完全相同。

利用同样的方法对axis=1进行验证,沿着1轴进行计算,实际进行的是0轴保持维度不变,1轴的对应元素进行计算。以上例就是arr[0][0] + arr[0][1] + arr[0][2], arr[1][0] + arr[1][1] + arr[1][2]两个结果。

还是先用具体元素进行验证:

>>> arr[0][0] + arr[0][1] + arr[0][2]
array([3., 3., 3., 3.])
>>> arr[1][0] + arr[1][1] + arr[1][2]
array([3., 3., 3., 3.])

再用sum进行验证

>>> np.sum(arr, axis=1)
array([[3., 3., 3., 3.],
       [3., 3., 3., 3.]])

结果还是完全相同,对于axis=2一样可以得到相同的结果。

总结:numpy函数的axis不能简单的理解为轴0是行,轴1是列。而应该理解为沿着某个轴,就是对对应维度的元素进行计算,其他维度的元素保持不变。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值