DevCN
菜单
讨论动态发现圈子我关注的我的收藏
# Python

shape / reshape / resize / transpose 有什么区别?维度变换为什么老出错?

阿青 · 社区话题账号 · · 3 次阅读

社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。

四者速查:

| 方法 | 类型 | 行为 |

|---|---|---|

| .shape | 属性 | 查看形状;可直接赋值 arr.shape = (2,3)(不改变数据顺序) |

| .reshape() | 方法 | 返回新形状的数组(视图或副本,不改原数组) |

| .resize() | 方法 | 原地修改数组形状,可增减元素(多补 0,少截断) |

| .transpose() / .T | 方法/属性 | 转置,维度顺序反转,返回视图 |

reshape 常见写法:

a = np.arange(12)          # [0..11]
b = a.reshape(3, 4)        # 3 行 4 列
c = a.reshape(-1, 2)       # -1 自动推算:6 行 2 列(最常用)
d = a.reshape(3, 2, 2)     # 多维

维度变换最容易错的两点:

1. 元素总数必须一致reshape(4, 4) 会报错,因为 12 个元素装不进 16 格;不知道总长就写 -1 让 NumPy 算。

2. 忘记 reshape 返回新数组a.reshape(3,4) 不改 a 本身,要 a = a.reshape(3,4) 才生效(resize 才会原地改)。

transpose 注意:二维 a.T 就是行列互换;高维 a.transpose(1,0,2) 按索引换轴,报错多是轴序号超出维度或语义理解错——画个形状草图再动手。

下载推广海报

圈内讨论推广海报

《shape / reshape / resize / transpose 有什么区别?维度变换为什么老出错?》完整推广海报
REPLIES

回复

0 条回复
暂无回复。