numpy模块中的sum(axis)方法

本文详细解析了NumPy中sum函数的使用方法,特别是axis参数的功能。通过具体实例展示了当axis取不同值时,如何对二维数组的不同维度进行求和操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、sum函数声明

sum(a, axis=None, dtype=None, out=None, keepdims=<class 'numpy._globals._NoValue'>)
  • 1

参数axis究竟是用来干嘛的?

2、实验

经过我的一些尝试,我发现以下规律:

(1) 如果axis=None那么就是对所有元素求和:
>>> np.sum([[0, 1], [0, 5], [2, 5]], axis=None)
  • 1

这条语句执行后将会输出:13,把所有元素都进行求和了!

(2) 如果axis=0那么就是对所有在同一列的元素求和:
>>> np.sum([[0, 1], [0, 5], [2, 5]], axis=0)
  • 1

这条语句执行后将会输出:array([ 2, 11]),把两列元素都进行求和了!

(3) 如果axis=1那么就是对所有在同一行的元素求和:
>>> np.sum([[0, 1], [0, 5], [2, 5]], axis=1)
  • 1

这条语句执行后将会输出:array([1, 5, 7]),把三行元素都进行求和了!

(4)如果axis的值大于1呢?这样将会报错!!
>>> np.sum([[0, 1], [0, 5], [2, 5]], axis=2)
  • 1

错误信息如下:

umpy.core._internal.AxisError: axis 2 is out of bounds for array of dimension 2

就是axis=2超出范围了!!!

<think>嗯,用户让我详细介绍一下Python中NumPy中的ndarray类的方法。首先,我需要回想一下ndarray的基本概念,它是NumPy的核心数据结构,用于存储多维数组。用户可能已经知道一些基础,但需要更系统的方法总结。 接下来,我应该分门别类地组织这些方法,比如数组操作、数学运算、统计方法、形状操作、索引和切片、IO操作、其他常用方法等。这样结构更清晰,用户查找起来方便。 我需要确保覆盖主要的方法,比如reshape、transpose这些形状操作,sum、mean等统计方法,还有像astype这样的类型转换。同时,要注意不要遗漏一些重要的方法,比如sort、argsort等排序方法。 可能用户是数据分析或科学计算的学习者,他们需要高效处理数组的方法。所以,每个方法的解释要简明,最好给出示例,这样用户更容易理解。例如,在解释reshape时,给出一个3x4数组转成4x3的例子。 还要注意一些方法的参数说明,比如axis参数在不同方法中的作用,这对正确使用这些方法很重要。比如sum方法axis=0和axis=1的区别。 另外,需要提醒用户哪些方法是返回新数组,哪些是原地修改,比如resize和reshape的区别。避免用户在使用时出现错误。 可能用户在使用过程中遇到问题,比如不知道如何转置数组,或者如何计算标准差,所以在统计方法部分要包括std、var等方法。 最后,检查是否有最新的NumPy版本中的方法变动,确保信息准确。比如,是否有一些方法被弃用,或者新增了哪些功能。不过大部分基础方法应该保持稳定。 总结下来,我需要将ndarray的方法分门别类,每个类别下列出常用方法,给出简要说明和示例,同时注意参数和使用场景。这样用户能快速找到所需信息,并正确应用在实际项目中。</think>以下是对NumPy库中`ndarray`类核心方法的系统介绍,按功能分类并附带示例说明: --- ### 一、数组操作类方法 1. **`reshape(new_shape)`** 返回新形状的数组(不改变原数据) ```python arr = np.arange(12) new_arr = arr.reshape((3,4)) # 转换为3x4二维数组 ``` 2. **`resize(new_shape)`** 直接修改原数组形状(原地操作) ```python arr.resize((4,3)) # 原数组变为4x3 ``` 3. **`transpose()`** 数组转置(行列互换) ```python arr = np.array([[1,2],[3,4]]) arr.T # 输出 [[1,3], [2,4]] ``` --- ### 二、数学运算方法 1. **`sum(axis=None)`** 沿指定轴求和 ```python arr = np.array([[1,2], [3,4]]) arr.sum(axis=0) # 输出 [4,6] ``` 2. **`mean(axis=None)`** 计算算术平均值 ```python arr.mean() # 对全元素求平均 ``` 3. **`std(axis=None)`** 计算标准差 ```python arr.std(axis=1) # 计算每行的标准差 ``` 4. **`dot(other)`** 矩阵乘法 ```python a = np.array([[1,2],[3,4]]) b = np.array([[5,6],[7,8]]) a.dot(b) # 矩阵乘积 ``` --- ### 三、统计分析方法 1. **`max(axis=None)`** 返回最大值 ```python arr.max(axis=1) # 每行的最大值 ``` 2. **`argmin(axis=None)`** 返回最小值的索引 ```python arr.argmin() # 全数组最小值的扁平化索引 ``` 3. **`cumsum(axis=None)`** 累积和 ```python np.array([1,2,3]).cumsum() # 输出 [1,3,6] ``` --- ### 四、类型转换方法 **`astype(dtype)`** 转换数组数据类型 ```python arr = np.array([1.5, 2.3]) int_arr = arr.astype(np.int32) # 转换为整型 ``` --- ### 五、IO操作 1. **`tofile(fid)`** 将数组写入文件 ```python arr.tofile('data.bin') ``` 2. **`dump(file)`** 序列化存储(pickle格式) ```python with open('data.pkl', 'wb') as f: arr.dump(f) ``` --- ### 六、其他重要方法 1. **`copy()`** 创建数组的深拷贝 ```python arr_copy = arr.copy() # 独立副本 ``` 2. **`sort(axis=-1)`** 沿指定轴原地排序 ```python arr.sort(axis=0) # 每列排序 ``` 3. **`argsort(axis=-1)`** 返回排序后的索引 ```python idx = arr.argsort() # 获取排序索引 ``` --- ### 关键参数说明 - **`axis`参数**: - `axis=0`:沿列方向操作 - `axis=1`:沿行方向操作 - `axis=None`:全数组操作 - **返回类型**: - 多数方法返回新数组(如`reshape`) - 部分方法原地修改(如`sort`) --- ### 典型应用场景 1. 数据预处理:`astype`转换数据类型 2. 特征工程:`reshape`调整数据维度 3. 统计分析:`mean/std`计算统计指标 4. 矩阵运算:`dot`进行线性代数运算 建议结合`np`模块函数(如`np.where()`)配合使用,可覆盖90%以上的数值计算需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值