【问题标题】:Generating weighted duplicate lists生成加权重复列表
【发布时间】:2018-04-03 11:17:47
【问题描述】:

我有几个列表如下:

l1=['InitialRequest','Approved','WorkStarted','OnHold','InProgress','OnHold','InProgress','Completed']

l2=['InitialRequest','Approved','WorkStarted','OnHold','OnHold','OnHold','OnHold','Cancelled']

l3=['InitialRequest','Approved','WorkStarted','InProgress','InProgress','InProgress','InProgress','Completed']

...直到 l7。我需要保持列表中给出的顺序,并生成每个列表 15000 次。所以我创建了这些列表的列表:

Status=[l1,l2,l3,l4,l5,l6,l7] 

我已经试过了:

Status_b = list(np.random.choice(Status, 15000, replace=True, p=[0.1,0.02,0.5,0.08,0.03,0.07,0.1,0.1]))

但我收到以下错误:

Traceback (most recent call last):

 File "<ipython-input-168-d6488b73dd38>", line 1, in <module>
   Status_b = list(np.random.choice(Status, 15000, replace=True, p=[0.1,0.02,0.5,0.08,0.03,0.07,0.1,0.1]))

 File "mtrand.pyx", line 1117, in mtrand.RandomState.choice

ValueError: a must be 1-dimensional

谁能给我一个解决方案?

【问题讨论】:

    标签: python list numpy duplicates


    【解决方案1】:

    与其让random 自己从列表中选择,不如让它自己选择索引:

    weights = [0.1,0.02,0.5,0.08,0.03,0.07,0.1,0.1]
    status_idx = np.random.choice(len(status), 15000, replace=True, p=weights)
    status_b  = [Status[i] for i in status_idx)
    

    【讨论】:

      猜你喜欢
      • 2013-04-27
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      • 2014-07-16
      • 2013-07-10
      • 2014-03-15
      • 1970-01-01
      相关资源
      最近更新 更多