我有一个形状为(15000,1,96,96),
的多维数组,其中每个96 * 96矩阵代表一个图像。我想将其形状转换为(15000,96,96,1).
我可以使用a=a.reshape(15000,96,96,1)
来做吗?这是正确的方法吗?
答案 0 :(得分:1)
对于您的具体示例,您需要将第二维转置为最后一维。您可以使用transpose method:
在numpy数组中对维度进行随机播放例如:
a = np.zeros((10,1,96,96))
print(a.shape)
>>> (10, 1, 96, 96)
a = a.transpose(0,2,3,1)
print(a.shape)
>>> (10, 96, 96, 1)
答案 1 :(得分:1)
要完成@OddNorg的评论,这是一个例子:
假设您有3张尺寸(2 * 2)的图像:
>>>img0 = [[0,0],[0,0]]
>>>img1 = [[1,1],[1,1]]
>>>img2 = [[2,2],[2,2]]
>>>imgs = np.concatenate([[img0],[img1],[img2]])
array([[[0, 0],
[0, 0]],
[[1, 1],
[1, 1]],
[[2, 2],
[2, 2]]])
>>>imgs.shape
(3,2,2)
现在我们希望第一维和第二维上的像素而不是第二维和第三维。
如果我们使用重塑它确实按预期工作:
>>>imgs_r = imgs.reshape((2,2,3))
>>>imgs_r[:,:,0]
array([[0, 0],
[1, 2]])
修改第一张图片
通过转置它工作正常,图像不会被修改:
>>>imgs_t = imgs.tranpose((1,2,0))
>>>imgs_t[:,:,0]
array([[0, 0],
[0, 0]])