Numpy中高维axis的操作个人理解

本文详细解析了Numpy中高维数组在sum和sort操作时,对不同axis的理解。针对三维数组,解释了axis=0、1、2时的求和与排序过程,帮助理解轴向操作如何影响元素间的加法与排序,以及如何根据需求选择合适的axis值。

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

Numpy中维数

numpy能够实现高维矩阵的运算,但是当维数超过3后,就能难理解根据某个轴进行运算的操作过程(太抽象了)。二维矩阵,就是有行和列,axis=0,对应是行,axis=1,对应是列,通过2个下标确定具体某个元素的位置,三维则需要三个下标确定某个元素的位置。

Numpy维度的直观理解

对应三维矩阵,那么里面的具体的元素是被三个[]所包围的,最外层[]对应于axis=0,即第一维,次外层[]对应于axis=1,即第二维,最里层的[]对应axis=2,即第三维。
在这里插入图片描述
多少个维度,就对应有多少个[]。

三维数组,sum(axis=i)的理解。

二维数组的对固定某个轴进行加减排序不难理解,但是达到三维及以上就比较难直观理解了。这里以三维数组为例,更高维度情况类似。
np.sum(axis=0)
这是按照第1维进行数组的求和。
在这里插入图片描述
对于axis=0,就对应于第一个[],那么从这个[]往内看,子单位是两个二维数组,sum(axi

### NumPy 中 `axis` 参数的作用 #### 1. 基本定义 在 NumPy 数组中,`axis` 参数用于指定操作的方向或度。具体来说,`axis=i` 表示沿着数组的第 i 个下标变化方向进行操作[^1]。 #### 2. 度与轴的关系 NumPy 的数组可以是一、二或多结构。对于不同度的数组,`axis` 参数的意义如下: - **一数组**: 对于形状为 `(n,)` 的一数组,只有单个轴(`axis=0`),表示沿整个数组长度方向的操作。 ```python import numpy as np one_dim = np.array([1, 2, 3]) sum_one_dim = np.sum(one_dim, axis=0) # 结果为 6 ``` - **二数组**: 形状为 `(m, n)` 的二数组有两个轴: - `axis=0`: 沿着列方向操作,即对每一列应用函数。 - `axis=1`: 沿着行方向操作,即对每一行应用函数。 ```python two_dim = np.array([[1, 2], [3, 4]]) col_sum = np.sum(two_dim, axis=0) # 结果为 array([4, 6]) row_sum = np.sum(two_dim, axis=1) # 结果为 array([3, 7]) ``` - **多数组**: 高数组有多个轴,例如三数组 `(a, b, c)` 可以通过设置不同的 `axis` 来控制操作的具体方向。 ```python three_dim = np.random.rand(2, 3, 4) dim_0_sum = np.sum(three_dim, axis=0).shape # (3, 4),按第一个度求和 dim_1_sum = np.sum(three_dim, axis=1).shape # (2, 4),按第二个度求和 dim_2_sum = np.sum(three_dim, axis=2).shape # (2, 3),按第三个度求和 ``` #### 3. 函数行为差异 某些 NumPy 函数在使用 `axis` 参数时表现出特定的行为模式。例如,在统计类函数(如 `np.min`, `np.max`, `np.median` 等)中,`axis` 定义了数据缩减的方向;而在增删改查类函数(如 `np.append`)中,则可能扩展或修改该方向上的数据[^3]。 #### 4. 实际案例解析 考虑以下例子来进一步理解 `axis` 参数的实际作用: ```python import numpy as np arr = np.arange(8).reshape((2, 2, 2)) print("原始数组:") print(arr) # 按照 axis=0 进行求和 sum_axis_0 = np.sum(arr, axis=0) print("\n按照 axis=0 求和后的结果:") print(sum_axis_0) # 按照 axis=1 进行求和 sum_axis_1 = np.sum(arr, axis=1) print("\n按照 axis=1 求和后的结果:") print(sum_axis_1) # 按照 axis=2 进行求和 sum_axis_2 = np.sum(arr, axis=2) print("\n按照 axis=2 求和后的结果:") print(sum_axis_2) ``` 上述代码展示了如何针对不同轴执行累加运算,并观察其返回的结果形状变化。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值