如何使用Numpy将三维数组转换为指定的列数组结构?
Numpy数组维度调整解决方案
原始数组的形状为 (2, 3, 4),目标数组的形状是 (2, 4, 3, 1)。要实现这个转换,需要先调整轴的顺序,再扩展维度,步骤如下:
- 调整轴的顺序:将每个子数组(形状
(3,4))的行和列互换,也就是把数组的轴从(0,1,2)重新排列为(0,2,1),得到形状(2,4,3)的数组。 - 扩展最后一维:给每个元素增加一个长度为1的维度,最终得到目标形状
(2,4,3,1)。
实现代码
import numpy as np arr = np.array([ [ [1, 3, 9, 1], [2, 2, 9, 1], [1, 1, 6, 4], ], [ [3, 3, 3, 4], [0, 9, 2, 6], [7, 6, 6, 1], ] ]) # 方法1:转置后扩展维度 result = np.expand_dims(arr.transpose(0, 2, 1), axis=-1) # 方法2:转置后直接reshape # result = arr.transpose(0, 2, 1).reshape(2, 4, 3, 1) print(result.shape) # 输出 (2, 4, 3, 1),符合目标结构
验证结果
以第一个子数组为例,转换后:
- 原第一列
[1,2,1]变为[[1],[2],[1]] - 原第二列
[3,2,1]变为[[3],[2],[1]]
完全匹配你给出的目标数组结构。
内容的提问来源于stack exchange,提问作者Mogli141
相关产品推荐
相关产品推荐

