文章目录
- 数组重塑(Reshaping of Arrays)
- 1. 基本用法
- 2. 核心规则
- 3. 参数说明
- 4. 应用场景
- 5. 注意事项
- 6. 扩展方法
数组重塑(Reshaping of Arrays)
NumPy
允许通过 reshape
方法或 np.reshape
函数改变数组的维度结构,而无需修改底层数据。这种操作在数据预处理、矩阵运算和机器学习中极为常见。
1. 基本用法
import numpy as np
arr = np.arange(6)
reshaped = arr.reshape(3, 2)
print(reshaped)
2. 核心规则
- (1)元素总数不变:新形状的各维度乘积必须等于原数组元素总数
arr.reshape(3,3)

- (2) 自动计算维度:可用 -1 自动推断某维度大小
arr.reshape(2, -1)
- (3)内存共享:默认返回视图(共享数据),除非使用
copy=True
reshaped[0,0] = 100
print(arr)
3. 参数说明
参数 | 说明 |
---|
newshape | 目标形状(整数或元组,如 (行, 列) 或 (通道, 高, 宽)) |
order | 数据填充顺序(默认 ‘C’ 按行优先,‘F’ 按列优先,‘A’ 保留原顺序) |
4. 应用场景
- (1)图像处理:将一维像素数据转换为三维张量(高×宽×通道)
flat_image = np.random.rand(3072)
image_3d = flat_image.reshape(32, 32, 3)
X_train = X_flatten.reshape(100, 28, 28)
vector = np.array([1,2,3])
column_matrix = vector.reshape(-1,1)

5. 注意事项
操作 | 结果 |
---|
原数组连续内存(C顺序) | reshape 高效生成视图( O ( 1 ) O(1) O(1)时间复杂度) |
原数组非连续内存 | 可能触发隐式拷贝(order='A' 时优先保留布局) |
需强制拷贝 | 使用 arr.reshape(...).copy() 或 np.reshape(arr, ..., copy=True) |
6. 扩展方法
- flatten():将多维数组展平为一维(返回副本)
- ravel():将多维数组展平为一维(返回视图,优先使用)
print(reshaped.ravel())