首页 > 解决方案 > 如何像 2D 一样转置 3D 矩阵?

问题描述

我想转置 3D 矩阵但不触及最内部的列表。3D矩阵是图像的numpy数组,转置的目标是旋转图像而不是改变像素值(rgb)。

image = np.array(
    [
        [[15, 15, 25], [50, 50, 50], [90, 90, 90], [255, 255, 255], [127, 127, 127]],

        [[121, 121, 121], [75, 10, 75], [187, 187, 187], [0, 0, 0], [210, 50, 100]],

        [[31, 31, 31], [63, 63, 63], [87, 87, 87], [63, 63, 63], [63, 63, 63]],

        [[95, 95, 95], [95, 95, 95], [115, 115, 115], [87, 87, 87], [95, 95, 95]],

        [[95, 95, 95], [63, 63, 63], [63, 63, 63], [87, 87, 87], [100, 250, 250]]
    ], dtype=np.uint8)

结果应该是这样的。

result = np.array(
    [
        [[15, 15, 25], [121, 121, 121], [31, 31, 31], [95, 95, 95], [95, 95, 95]],

        [[50, 50, 50], [75, 10, 75], [63, 63, 63], [95, 95, 95], [63, 63, 63]],

        [[90, 90, 90], [187, 187, 187], [87, 87, 87], [115, 115, 115], [63, 63, 63]],

        [[255, 255, 255], [0, 0, 0], [63, 63, 63], [87, 87, 87], [87, 87, 87]],

        [[127, 127, 127], [210, 50, 100], [63, 63, 63], [95, 95, 95], [100, 250, 250]]
    ], dtype=np.uint8)

标签: pythonnumpy

解决方案


看看np.swapaxis

np.swapaxes(image, 0, 1)

推荐阅读