在python中复制列表m次

时间:2018-09-13 11:39:21

标签: python list numpy

我正在尝试将我在python中拥有的两个不同的图像数据库配对(让我们说数据库A和数据库B,它们存储在numpy数组列表中)。对于数据库A,我有x幅图像(例如6个),对于数据库B y个图像(例如78个)。来自数据库A的每个图像对应于来自数据库B的78/6 = 13个图像,并且顺序相同。因此,

A    B
--------------
1    [1, 13]
2    [14, 26]
3    [27, 39]
4    [38, 52] 
5    [51, 65] 
6    [66, 78] 

我想做的是从数据库A复制每个图像13次,以便与数据库B拥有相同数量的图像。问题是这些数量的数量不固定(x和y)。因此,

len1 = len(database_A)
len2 = len(database_B)
m = round(len2/len1)

如何返回m倍于数据库列表A的元素的副本(m倍于映像1,然后m倍于映像2,依此类推)。

编辑:有时该部门会产生一些模块。我该如何处理该模块。在某些情况下,我需要为数据库A 6图像创建数据库B 68,而生成mod =2。在这种情况下,我只需要存储两个数据库中的66张图像。

1 个答案:

答案 0 :(得分:2)

假设图像位于(n, x, y)(n, x, y, RGB)形状的阵列中:

np.repeat(A, B.shape[0] // A.shape[0], axis = 0)

如果您真的想保留列表,我仍然建议在numpy

中进行重复
list(np.repeat(np.array(A), len(B) // len(A), axis = 0))

如果您真的想要列表理解

A = [a for a in A for _ in range(len(B) // len(A))]
if len(B) % lenA > 0:
    B = B[:-(len(B) % len(A))]