通过重复值扩展列表

时间:2018-08-21 18:49:34

标签: python pandas

我有一个大小(例如1201)和任意列表(例如[1,2,3])

我想使列表中的1200个值更长,大致相等地重复每个不同的值。因此,在这种情况下,新列表将是[1,1,...,2,2 ...,3,3],其中有400 1s,400 2s和401 3s。

也许我没有很好地解释-不必平均重复,例如,如果有一个奇数。

1 个答案:

答案 0 :(得分:0)

>>> a = [1, 2, 3]
>>> size = 1201
>>> num_repeats = int(size / len(a))
>>> [val for val in a for _ in range(num_repeats)]
[1, 1, ... 2, 2, ... 3, 3, ...]

这将使您尽可能接近甚至使用重复项。从这里,您需要确定分布的“粗糙度”以达到所需的大小。如果您不能决定,我想随机插入会得到某种结果:

from random import randrange
result = [val for val in a for _ in range(num_repeats)])
while len(result) < size:
    index = randrange(len(random) + 1)
    result.insert(index, result[index])
  

请注意,_是不需要使用的变量的占位符。