如何重塑numpy数组实现行转列,将3x3x2数组转换为2x9指定形状
你可以通过维度重排+重塑的组合操作实现需求,代码非常简洁:
xy_reshaped = xy.transpose(2, 0, 1).reshape(2, -1)
操作说明
原数组xy的维度顺序为(y轴分组, x轴序列, 值类型[x/y]),我们只需要先调整维度顺序,再展平即可:
transpose(2, 0, 1):将存储x/y值的第三维(索引为2)调整到第一维,其余两个维度保持原有顺序,调整后数组shape从(3,3,2)变为(2,3,3)reshape(2, -1):将后两个维度的3*3=9个元素直接展平,参数-1会自动计算对应维度的大小,无需手动指定长度。
完整测试代码
import numpy as np X,Y = np.arange(3),np.arange(3) xy = np.array([[(x, y) for x in X] for y in Y]) xy_reshaped = xy.transpose(2, 0, 1).reshape(2, -1) print(xy_reshaped)
运行后输出结果与你需要的格式完全一致:
[[0 1 2 0 1 2 0 1 2] [0 0 0 1 1 1 2 2 2]]
内容的提问来源于stack exchange,提问作者Vishal Jain
相关产品推荐
相关产品推荐

