我正在尝试将我在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张图像。
答案 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))]