如何将 Numpy 维度数组 (3, 2998, 2403) 转换为 (2998, 2403, 3)?

Posted

技术标签:

【中文标题】如何将 Numpy 维度数组 (3, 2998, 2403) 转换为 (2998, 2403, 3)?【英文标题】:How do I convert a Numpy array of dimensions (3, 2998, 2403) into (2998, 2403, 3)? 【发布时间】:2021-01-23 13:48:56 【问题描述】:

这是当前的形状(通道、高度、宽度),如何转换成通常的图像格式-(高度、宽度、通道)?

【问题讨论】:

【参考方案1】:

你可以使用np.transpose:

final = np.transpose(final, (1, 2, 0))

【讨论】:

【参考方案2】:

有两种方法: 要么你做

final = final.reshape(2998, 2403, 3)

或者你这样做:

final = final.permute(1, 2, 0)

【讨论】:

【参考方案3】:

您可以使用np.moveaxis(array, source, destination) 移动轴。这里源轴是0,目标轴是-1(最后一个)

final = np.moveaxis(final,0,-1)

【讨论】:

【参考方案4】:

另一种解决方案是 np.moveaxis,例如:

import numpy as np

if __name__ == "__main__":
    a = np.array([[[1,2,3,4],[4,5,6,7]],[[1,2,3,4],[4,5,6,7]],[[1,2,3,4],[4,5,6,7]]])
    print(a.shape)
    print(a)
    b = np.moveaxis(a,0, -1)
    print(b.shape)
    print(b)

输出: 在 np.moveaxis 之前 (3, 2, 4) [[[1 2 3 4] [4 5 6 7]]

[[1 2 3 4]
 [4 5 6 7]]

[[1 2 3 4]
 [4 5 6 7]]]

在 np.moveaxis 之后:

(2, 4, 3)
[[[1 1 1]
  [2 2 2]
  [3 3 3]
  [4 4 4]]

 [[4 4 4]
  [5 5 5]
  [6 6 6]
  [7 7 7]]]

【讨论】:

以上是关于如何将 Numpy 维度数组 (3, 2998, 2403) 转换为 (2998, 2403, 3)?的主要内容,如果未能解决你的问题,请参考以下文章

Numpy:如何使用数组的最后一个维度作为值?

如何使用 numpy 或 pandas 创建(或更改)数组/列表的维度?

Numpy 数组:连接展平和添加维度

如何展平 numpy 数组的最后两个维度? [复制]

numpy 插入一个元素,保持数组维度的数量

如何从填充零的 3 维 numpy 数组创建 4 维 numpy 数组?