采用数组: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的值
我不知道如何获得所需的瓷砖。欢迎任何建议。
答案 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)。