【问题标题】:Expand list by repeating values [duplicate]通过重复值扩展列表[重复]
【发布时间】:2018-08-21 18:49:34
【问题描述】:

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

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

也许我没有解释清楚 - 它不必均匀重复,比如如果有一个奇数。

【问题讨论】:

  • np.repeat 是你的朋友。只需使用np.repeat(your_list, 400)
  • 好的,但是如果我有一个奇数呢?
  • 那就发挥创意吧。也许使数组比它需要的长一个并将其剪辑到您想要的长度。例如,您可以使用np.repeat(arr, size//len(arr)+1)[:size]
  • 查看我的答案的编辑。

标签: python pandas


【解决方案1】:
>>> 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])

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 2019-10-22
    • 1970-01-01
    相关资源
    最近更新 更多