• 深入理解Numpy中sum求和的axis参数


    问题

    Numpy是最常见的多维向量处理的工具库,求和则是多维向量的常见操作,然而sum求和方法的axis参数的理解对于多数人而言,特别容易混淆和出错,尤其对于初学者更是困难重重。

    关于axis参数的理解,互联网上已经有大量相关介绍其用法的文章,然而这些文章多数描述较为混乱,或是简单的复制官方文档的定义,或是肤浅的理解,对于读者而言,看了比不看更难受,更加难以理解。

    针对上述问题,本文提出一种新颖的理解axis参数的方法,可以帮助读者更好的掌握多维向量求和的方法。

    方法

    首先,需要了解axis参数表示针对哪一个维度进行压缩,例如设有一尺寸为(2,3,4)的多维向量,现要求对axis=0进行压缩,那么将会得到(3,4)尺寸的向量;若对axis=1进行压缩,则得到(2,4)尺寸;若对axis=2进行压缩则得到(2,3)尺寸。由此可见,axis指定了压缩的维度。

    其次,需要了解待压缩的维度有几个元素,而元素的个数就是原始尺寸中待压缩的数字,如(2,3,4)的多维向量,需要对axis=1进行压缩,则意味着三个同等尺寸的元素需要合并为一个;

    下面分别以二维和三维向量为例讲解axis参数的具体用法。

    二维向量示例

    首先来看代码如下:

    
    import numpy as np
    
    a = np.array([
        [0, 1],
        [1, 2],
        [2, 3],
    ])
    print(a) # [3,2]
    
    print(np.sum(a, axis=0)) # [3 6]
    print(np.sum(a, axis=1)) # [1 3 5]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    针对axis=0进行压缩,而0维有3个元素,现需要将3个元素压缩成1个元素,即[3,6];
    同理,针对axis=1进行压缩,而1维有2个元素,压缩后就成为[1,3,5]

    三维向量示例

    import numpy as np
    
    
    a = np.random.randint(0, 2, size=(2,3,4))
    print(a)
    print('-'*10)
    
    # 0维有两个(3,4)的Array,将其压缩成一个
    print(np.sum(a, axis=0))
    
    # 1维有三个,将其压缩成一个
    print(np.sum(a, axis=1))
    
    # 2维有四个元素,将其压缩成一个
    print(np.sum(a, axis=2))
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    结语

  • 相关阅读:
    .ssh/config
    时序预测 | MATLAB实现POA-CNN-LSTM鹈鹕算法优化卷积长短期记忆神经网络时间序列预测
    PMP备考大全:经典题库(8月第1、2周)
    详解ssh远程登录服务
    ssh 设置普通用户使用密钥登录
    【05】计算机指令:让我们试试用纸带编程
    LocalDateTime、LocalDate、Date的相互转换工具类
    RabbitMQ Windows 安装、配置、使用 - 小白教程
    Threejs_05 几何体顶点索引
    “云炬众创”小程序的操作演示
  • 原文地址:https://blog.csdn.net/gschen_cn/article/details/127762495