【问题标题】:Generate random numbers from a list of numbers [duplicate]从数字列表中生成随机数[重复]
【发布时间】:2020-01-29 19:02:04
【问题描述】:

我有一个数字列表:

data = [15, 30, 45]

如何生成从这个data 列表中随机抽取的N 个数字的列表?得到结果为:

new_data = [15,15, 30, 45, 15,45, 30, 15, 45, 30, 45, 45, 45, 15, ...]

np.random.randint(15, high=45, size=N) # does not help here

为此使用什么numpy 函数?

【问题讨论】:

标签: python numpy random


【解决方案1】:

你可以简单地使用np.random.choice:

import numpy as np 
data=[15,30,45]
N = 50
new_list = np.random.choice(data,N)

编辑:使用random.sample() 将不起作用,因为采样是在没有替换的情况下完成的,因此样本不能超过原始数据的长度。

【讨论】:

  • 谢谢。我已经编辑了代码并忘记更改导入,因为我首先使用了random
【解决方案2】:

numpy.random.choice 可以这样做:

import numpy

data = [15, 30, 45]
N = 20
new_data = numpy.random.choice(data, N)
print(new_data)

https://ideone.com/ECqtJ3

【讨论】:

    【解决方案3】:

    对于非 Numpy 解决方案:

    import random
    
    
    l = [15, 30, 45]
    N = 30
    result = [random.choice(l) for i in range(N)]
    
    # outputs: [15, 30, 15, 45, 15, 15, 30, 15, 30, 45, 15, 45, 30, 15, 30, 15, 15, 45, 30, 45, 30, 45, 45, 15, 15, 45, 30, 45, 45, 45]
    

    【讨论】:

      【解决方案4】:
      import random
      
      data = [15, 30, 45]
      new_data = []
      N = 14
      
      for i in range (0, N) :
          new_data.append(random.choice(data))
      
      print("Data: ", data)
      print("\nNew data :", new_data)
      
      input("\n\nPress Enter to continue...")
      

      https://ideone.com/5iD9U7

      【讨论】:

      • 是的,或者列表理解更清晰:new_data = [random.choice(data) for _ in range(N)]
      • 像魅力一样工作!
      猜你喜欢
      • 2022-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多