繁体   English   中英

如何改变3d数组的形状

[英]how to change shape of 3d array

我有一个形状为(288,512,512)的 3d 数组,其中 288 是图像的数量,512*512 是图像的宽度和高度。 此外,该图像的形状为 (512,512,288) 的掩码阵列。 如何将遮罩阵列的形状转换为此图像阵列的形状? 我重新塑造了形状(288,512,512)的掩码数组,但我从这个数组中绘制了任何掩码,没有发现这个掩码与其对应的图像之间的相关性。

在此处输入图像描述

重塑只是使字节保持相同的顺序。 您实际上需要移动像素。

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

您不想重塑数组,而是交换维度的解释。 根据掩码的哪个轴对应于行,您将需要

mask.transpose()

或者

mask.transpose(2, 0, 1)

这是一个简单的示例,显示了 reshape 和 transpose 对小型二维数组的作用,以帮助您了解差异:

>>> x = np.arange(10).reshape(2, 5)
>>> x
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
>>> x.reshape(5, 2)
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7],
       [8, 9]])
>>> x.transpose()
array([[0, 5],
       [1, 6],
       [2, 7],
       [3, 8],
       [4, 9]])

如您所见, reshape 改变了轴的大小,而 transpose 改变了步幅。 通常,当您组合它们时,数据最终会被复制到某个地方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM