• [开发技巧]·Numpy中对axis的理解与应用


    [开发技巧]·Numpy中对axis的理解与应用

     

    1.问题描述

    在使用Numpy时我们经常要对Array进行操作,如果需要针对Array的某一个纬度进行操作时,就会用到axis参数。

    一般的教程都是针对二维矩阵操作axis,当axis为0时,计算方向时列,当axis为1时计算方向为行。

    但是这样的描述并不能让我们真正理解axis的含义。下面我一个三维Array,来带领大家深入理解axis

    2.实战讲解

    >>> import numpy as np
    >>> arrays = np.arange(0,12).reshape([2,3,2])
    >>> arrays
    array([[[ 0,  1],
            [ 2,  3],
            [ 4,  5]],
    
           [[ 6,  7],
            [ 8,  9],
            [10, 11]]])
    >>> np.sum(arrays)
    66
    >>> np.sum(arrays,axis=0)
    array([[ 6,  8],
           [10, 12],
           [14, 16]])
    >>> np.sum(arrays,axis=1)
    array([[ 6,  9],
           [24, 27]])
    >>> np.sum(arrays,axis=2)
    array([[ 1,  5,  9],
           [13, 17, 21]])
    

    为什么是这个结果呢,笔者来帮大家说梳理一下:

    首先我们新建了一个shape(2,3,3)的Array

    1.用np.sum(arrays)时,计算的是所有元素的和。

    2.用np.sum(arrays,axis = 0)时,我们可以这样理解,以最外面的[ ]为一个list,对里面两个元素(每个元素都是二维Array)进行相加求和,所以得到的Array和相加元素形状相同。

    2.用np.sum(arrays,axis = 1)时,以中间的[ ]为一个list,对里面三个元素(每个元素都是一维Array)进行相加求和,所以得到的Array和相加元素形状相同,但是由于有两个中间的[ ],所以把两个拼接在了一起。

    3.用np.sum(arrays,axis = 2)时,以最里面的[ ]为一个list,对里面两个元素(每个元素都是一个人说)进行相加求和,所以得到的Array和相加元素形状相同,但是由于有两个中间的[ ],每个中间的[ ]包含三个[ ],最终shape为(2,3)。

    类似其实我们在使用下标选取内容时使用相同的概念

    >>> import numpy as np
    >>> arrays = np.arange(0,12).reshape([2,3,2])
    >>> arrays
    array([[[ 0,  1],
            [ 2,  3],
            [ 4,  5]],
    
           [[ 6,  7],
            [ 8,  9],
            [10, 11]]])
    >>> arrays[0,:,:]
    array([[0, 1],
           [2, 3],
           [4, 5]])
    >>> arrays[:,0,:]
    array([[0, 1],
           [6, 7]])
    >>> arrays[:,:,0]
    array([[ 0,  2,  4],
           [ 6,  8, 10]])
    >>> 

    大家可以根据笔者上面讲述的,好好理解分析一下为什么是这样。

    hope this helps

  • 相关阅读:
    redis该怎么用
    cookie和session的比较
    web常见攻击
    请大神指导从大日志文件中统计关键字次数的办法
    apache中 MaxClients 与MaxRequestsPerChild
    如何提高缓存命中率
    CSU-ACM2018暑假集训比赛1
    CodeForces
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/xiaosongshine/p/10719474.html
Copyright © 2020-2023  润新知