如何将 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)?的主要内容,如果未能解决你的问题,请参考以下文章