【问题标题】:Populate data from a list从列表中填充数据
【发布时间】:2021-01-18 23:00:15
【问题描述】:

我有一个包含以下项目的列表

l = [11.1, 22.2, 33.3, 11.1, 33.3, 33.3, 22.2, 55.5]

每一项都是 11.1 的倍数,列表的长度是 8。 我想生成另一个包含 30 个项目的列表,其值为 11.1、22.2、33.3、55.5 存在于原始列表中l

我想知道如何将列表中的数据从l 填充到l_new

【问题讨论】:

  • 你想用选定的值随机生成l_new吗?
  • 你能分享一个输出示例吗?
  • @AndrejKesely 是的,你是对的。或者,是否可以生成 l_new 使得 ll_new 具有相同的分布
  • @CarloZanocco 我希望上面的评论能部分回答你的问题
  • 你能告诉我答案是否解决了你的问题吗?

标签: python-3.x list statistics data-analysis


【解决方案1】:

您可以使用random 模块来做到这一点:

import random

l = [11.1, 22.2, 33.3, 11.1, 33.3, 33.3, 22.2, 55.5]

l_new = [random.choice(l) for _ in range(0, 30)]
print(l_new)

#OUTPUT:
#[11.1, 11.1, 22.2, 33.3, 22.2, 11.1, 33.3, 11.1, 55.5, 11.1, 33.3, 22.2, 55.5, 22.2, 22.2, 33.3, 11.1, 11.1, 33.3, 22.2, 33.3, 11.1, 11.1, 33.3, 22.2, 33.3, 33.3, 11.1, 33.3, 22.2]

l_new = random.choices(l, k=30)
print(l_new)

#OUTPUT:
#[11.1, 33.3, 33.3, 55.5, 33.3, 33.3, 55.5, 11.1, 22.2, 11.1, 55.5, 11.1, 11.1, 55.5, 22.2, 22.2, 22.2, 33.3, 11.1, 33.3, 55.5, 55.5, 33.3, 11.1, 11.1, 55.5, 22.2, 22.2, 11.1, 22.2]

第一个解决方案l_new = [random.choice(l) for _ in range(0, 30)] 使用列表解析和random.choice() 函数,每次迭代都从l 中选择一个项目。

第二种解决方案l_new = random.choices(l, k=30)只需调用choices()函数并让它生成列表,您必须指定k,即要选择的元素数。


还有另一种方式需要numpy 模块:

import numpy

l = [11.1, 22.2, 33.3, 11.1, 33.3, 33.3, 22.2, 55.5]

l_new = list(numpy.random.choice(l, size=30))
print(l_new)

#OUTPUT:
#[11.1, 33.3, 11.1, 22.2, 33.3, 22.2, 22.2, 33.3, 55.5, 33.3, 22.2, 33.3, 22.2, 55.5, 33.3, 33.3, 33.3, 55.5, 33.3, 11.1, 11.1, 11.1, 55.5, 11.1, 33.3, 33.3, 22.2, 22.2, 33.3, 22.2]

列表由numpy.random.choice生成

【讨论】:

  • 我想知道我们是否可以在使用numpy.random.choice 时修复种子。非常感谢发布的解决方案。
  • from numpy.random import MT19937 from numpy.random import RandomState, SeedSequence rs = RandomState(MT19937(SeedSequence(123456789))) # Later, you want to restart the stream rs = RandomState(MT19937(SeedSequence(987654321))) 提供here。我不确定如何在发布的答案中使用它。你能帮忙吗?
  • 您能否就此提出一个新问题并解释您想要实现的目标?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
相关资源
最近更新 更多