使用np.tile在一批图像中平铺每个图像的10个图像

时间:2018-10-19 15:44:19

标签: python numpy tile

采用数组:arr = [0, 1, 2]

np.tile(arr,[10,1])
array([[0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2]])
>>> np.tile(arr,[10,2])
array([[0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2]])

类似于此,我想使用平铺功能创建大小为10x227x227x3的图像批处理的10个副本(该批处理已包含10张图像)。对于每个要创建拼贴的图像,我都希望使用。所以我应该得到100x227x227x3

但是,当我这样做时,M = 10):

    images = np.tile(img_batch, [M, 1])

我得到的是10x227x2270x3,图像= np.tile(img_batch,[M])也不起作用,并带来了大小为10x227x227x30的值

我不知道如何获得所需的瓷砖。欢迎任何建议。

1 个答案:

答案 0 :(得分:1)

您的img_batch有4个维度。制作尺寸为4的 reps

np.tile(img_batch, [M, 1, 1, 1])

否则,根据docs,在您的第一种情况下,它等效于np.tile(img_batch, [1, 1, M, 1]

  

如果A.ndim> d,则通过在其前面加上1将其提升为A.ndim。   因此,对于形状为(2,3,4,5)的A,将(2,2)的重复视为   (1、1、2、2)。