关于numpy中的axis和shape的一些思考

首先对于axis的理解

对于高维的矩阵,对于新手来说,分析它的axis,可能会有些困难。但是不用担心,看完这篇帖子,你应该就明白了

一句话,看axis就看是几级中括号

最外侧的中括号是一级中括号,表示axis=0

里面一层的中括号是二级中括号,表示axis=1

在一级中括号的眼里(axis=0),他看不见两个二级中括号中间的内容。

上式的在axis=0方向的和

在二级中括号的眼里(axis=1),他也不知道一级中括号的存在。

上式的在axis=1方向的和,只是在二级中括号内部发生的

-----------------------------------------------------------------------------

好困啊,明天再更新吧

### NumpyAxis参数的作用及示例解释 #### Axis参数的核心概念 在Numpy中,`axis` 表示的是数组的轴(维度)。对于一个多维数组来说,每一维都可以看作是一个方向或者一条线。当执行某些操作(如求、最大值等)时,可以通过 `axis` 参数指定沿着哪个方向进行计算。如果不理解 `axis` 的含义,则很难高效地利用Numpy处理复杂的数据结构。 例如,给定一个三维数组 `arrs = np.arange(24).reshape((3, 2, 4))`,其形状为 `(3, 2, 4)`,即该数组有三个维度:第一个维度大小为3,第二个维度大小为2,第三个维度大小为4[^1]。 --- #### 示例解析 以下是几个具体的例子来说明 `axis` 的作用: ##### 示例1:求操作 (`np.sum`) 考虑如下代码: ```python import numpy as np arrs = np.arange(24).reshape((3, 2, 4)) print("原始数组:") print(arrs) # 沿着不同的轴求 print("\n沿着 axis=0 求 (按第0维压缩):") print(np.sum(arrs, axis=0)) print("\n沿着 axis=1 求 (按第1维压缩):") print(np.sum(arrs, axis=1)) print("\n沿着 axis=2 求 (按第2维压缩):") print(np.sum(arrs, axis=2)) ``` - **`axis=0`**: 对应于最外层维度的操作。这意味着将相同位置上的元素相加,最终结果会减少第一维的长度。 - **`axis=1`**: 针对中间维度的操作。这相当于固定其他维度不变的情况下,对该维度内的元素逐项求。 - **`axis=2`**: 处理最内层维度。这是指在同一平面内,针对每行或列依次累加。 运行以上代码可以直观看到不同 `axis` 值带来的变化[^1]。 --- ##### 示例2:寻找最大值 (`np.max`) 再来看另一个常用场景——查找某特定轴的最大值: ```python a = np.array([[78, 34, 87, 25, 83], [25, 67, 97, 22, 13], [78, 43, 87, 45, 89]]) print("原二维数组:") print(a) print("\n沿 axis=0 查找最大值:") print(a.max(axis=0)) print("\n沿 axis=1 查找最大值:") print(a.max(axis=1)) ``` 在这里, - 当设置 `axis=0` 时,比较各列对应位置处数值并返回最高者; - 若设定为 `axis=1` 则是在各行内部选取峰值[^4]。 --- #### 更复杂的案例:拼接数组 (`np.concatenate`) 除了基本运算之外,像连接两个或多组数据这样的任务也需要依赖 `axis` 来定义组合的方向。比如下面这段程序展示了如何通过调整此选项改变输出形式: ```python X = np.arange(620 * 128 * 88).reshape(620, 1, 128, 88) y = np.arange(620) bottoms = [] bottoms.append(X) bottoms.append(y[:, None]) result_X, result_y = np.concatenate(bottoms[:-1], axis=1), bottoms[-1] print(result_X.shape) # 输出新的形状 ``` 在这个片段里,我们把多个张量按照第二维度堆叠起来形成一个新的特征集合[^5]。 --- ### 总结 综上所述,掌握 `axis` 是精通 NumPy 关键一步。无论是简单的统计还是高级变换都需要清晰认识各个维度间关系以及它们相互影响的方式。只有这样才能充分发挥这个强大工具的优势完成各种数据分析工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值