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

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

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(axis=0)就是这两个二维数组的求和,那么就是这两个二维数组对应位置的元素相加,就得到了结果,求和后就消掉了第一维度,降维了,变成二维矩阵。
也可以这么理解,就是将元素第二和第三个下标相同,第1个下标不同的元素相加得到。a[0][0][0]+a[1][0][0]。

NumPy 中,`axis` 参数用于指定操作沿着数组的哪个轴进行。理解 `axis=0` 和 `axis=1` 的区别需要结合数组的度结构。 ### `axis=0` 的作用 当设置 `axis=0` 时,操作会沿着数组的**第一个度(行方向)**进行。这意味着 NumPy 会沿着行的方向对列执行操作。例如,在一个二数组中,`axis=0` 会将每一列的数据作为一个整体进行处理。 以下是一个示例,展示 `axis=0` 的效果: ```python import numpy as np x = np.array([[11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26, 27, 28, 29, 30], [31, 32, 33, 34, 35]]) y = np.sum(x, axis=0) print(y) # [105 110 115 120 125] ``` 在这个例子中,`np.sum(x, axis=0)` 对每一列的所有元素求和,最终输出一个一数组,其中每个元素是对应列的总和[^2]。 ### `axis=1` 的作用 当设置 `axis=1` 时,操作会沿着数组的**第二个度(列方向)**进行。这意味着 NumPy 会沿着列的方向对行执行操作。例如,在一个二数组中,`axis=1` 会将每一行的数据作为一个整体进行处理。 以下是一个示例,展示 `axis=1` 的效果: ```python y = np.sum(x, axis=1) print(y) # [ 65 90 115 140 165] ``` 在这个例子中,`np.sum(x, axis=1)` 对每一行的所有元素求和,最终输出一个一数组,其中每个元素是对应行的总和[^2]。 ### 高数组中的 `axis` 操作 对于更高度的数组,`axis` 参数的作用方式类似。例如,在一个四数组中,`axis=3` 表示沿着第四个度(最内层的轴)进行操作。 以下是一个四数组的示例: ```python import numpy as np a = np.array([[[[1, 2], [1, 3], [1, 4]], [[1, 7], [1, 6], [1, 5]], [[1, 2], [1, 3], [1, 4]]]]) print(np.sum(a, axis=3)) # Sum along the fourth axis print(np.sum(a, axis=3).shape) # Resulting shape print(np.sum(a, axis=3, keepdims=True)) # Keep the summed axis as dimension of 1 print(np.sum(a, axis=3, keepdims=True).shape) # Resulting shape with keepdims ``` 在这个例子中,`axis=3` 表示沿着最内层的轴(即每个子数组的最后一个度)进行求和操作。通过 `keepdims=True`,可以保留被操作轴的度为 1[^1]。 ### 总结 - `axis=0`:沿着行方向操作,对列进行操作。 - `axis=1`:沿着列方向操作,对行进行操作。 - 在更高数组中,`axis=i` 表示沿着第 `i` 个度进行操作。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值