numpy中的reshape()理解

本文详细介绍了numpy中reshape()函数的工作原理,通过实例解释了如何按照指定形状重新排列数组元素。强调了reshape参数order的重要性,分别阐述了类C(行优先)和类Fortran(列优先)两种顺序,并指出在深度学习中正确使用reshape的必要性。

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

np.reshape()

np.reshape(n,m)是按照numpy中的原来数组的默认编号新数组的最后一个轴开始填充;
以下面的b=a.reshape(6,2)为例,将数组a中的所有元素编号(numpy默认情况下以最末尾的轴开始数,所有是’0’ ‘1’ ‘2’,而不是’0’ ‘4’ ‘8’),然后填充新的数组b,因为数组b最后一个轴维度是2,所以结果如下所示, b[0,:]=[0,1]

>>> a=np.arange(12).reshape(3,4)
>>> a
array([[ 0, 1, 2, 3],
       
### Numpy中Axis参数的作用及示例解释 #### 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 关键一步。无论是简单的统计还是高级变换都需要清晰认识各个维度间关系以及它们相互影响的方式。只有这样才能充分发挥这个强大工具的优势完成各种数据分析工作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值