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

简介: 深入理解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]

针对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月前
|
机器学习/深度学习 索引 Python
Numpy学习笔记(二):argmax参数中axis=0,axis=1,axis=-1详解附代码
本文解释了NumPy中`argmax`函数的`axis`参数在不同维度数组中的应用,并通过代码示例展示了如何使用`axis=0`、`axis=1`和`axis=-1`来找到数组中最大值的索引。
80 0
Numpy学习笔记(二):argmax参数中axis=0,axis=1,axis=-1详解附代码
|
Python
浅谈NumPy中的维度Axis
NumPy中的维度是一个很重要的概念,很多函数的参数都需要给定维度Axis,如何直观的理解维度呢?我们首先以二维数组为例进行说明,然后推广到多维数组。 (有人将ndim属性叫维度,将axis叫轴,我还是习惯将axis称之为维度,axis=0称为第一个维度)
81 0
  浅谈NumPy中的维度Axis
numpy的使用说明(六):一招帮你彻底搞懂axis=0和axis=1
numpy的使用说明(六):一招帮你彻底搞懂axis=0和axis=1
numpy的使用说明(六):一招帮你彻底搞懂axis=0和axis=1
成功解决numpy.core._internal.AxisError: axis -1 is out of bounds for array of dimension 0
成功解决numpy.core._internal.AxisError: axis -1 is out of bounds for array of dimension 0
|
Python
numpy.min(axis)用法
重点看看 axis,这里没有告诉你none、0、1表示啥。需要查找: - none:整个矩阵 - 0:每列 - 1:每行
2072 0
|
2月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
76 0
|
3月前
|
机器学习/深度学习 数据处理 计算机视觉
NumPy实践宝典:Python高手教你如何轻松玩转数据处理!
【8月更文挑战第22天】NumPy是Python科学计算的核心库,专长于大型数组与矩阵运算,并提供了丰富的数学函数。首先需安装NumPy (`pip install numpy`)。之后可通过创建数组、索引与切片、执行数学与逻辑运算、变换数组形状及类型、计算统计量和进行矩阵运算等操作来实践学习。NumPy的应用范围广泛,从基础的数据处理到图像处理都能胜任,是数据科学领域的必备工具。
59 0
|
17天前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
27 3
|
18天前
|
存储 机器学习/深度学习 算法
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
33 2
|
2月前
|
机器学习/深度学习 算法 数据可视化
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
特征工程是机器学习流程中的关键步骤,通过将原始数据转换为更具意义的特征,增强模型对数据关系的理解能力。本文重点介绍处理数值变量的高级特征工程技术,包括归一化、多项式特征、FunctionTransformer、KBinsDiscretizer、对数变换、PowerTransformer、QuantileTransformer和PCA,旨在提升模型性能。这些技术能够揭示数据中的潜在模式、优化变量表示,并应对数据分布和内在特性带来的挑战,从而提高模型的稳健性和泛化能力。每种技术都有其独特优势,适用于不同类型的数据和问题。通过实验和验证选择最适合的变换方法至关重要。
46 5
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征