【问题标题】:Creating an Array with an equal number of 0 and 1 in a random order?以随机顺序创建具有相等数量 0 和 1 的数组?
【发布时间】:2021-04-17 19:31:05
【问题描述】:

在我解释之前,这是我的代码供参考:

import numpy as np 

arrayteam = [[3,3,3,3,3,3],[2,2,2,2,2,2],[1,1,1,1,1,1]]
#nteams = 3
#nsubteam = 2

#newnums = np.zeros((len(arrayteam),len(arrayteam[0])))

subteam = [] 
for i in range(len(arrayteam)):
    subteam.append(np.random.choice([0,1],size=len(arrayteam[i]),p=[0.5,0.5]))

print (subteam)

这是输出:

[array([0, 1, 0, 1, 1, 1]), array([1, 1, 0, 1, 0, 0]), array([1, 0, 1, 1, 1, 1])]

如您所见,它随机选择我想要的 0 和 1,但是每个数组中 0 和 1 的数量不相等,显然是因为我将它设置为 p=0.5,所以有 50% 的机会将选择 0 或 1。我想拥有它,以便每个数组中有 3 个零和 3 个 1,但它们以随机顺序出现。我该怎么做?

另外,我怎样才能最终改变我希望零和一出现的位置?例如,如果我希望数组中的前 3 个数字为 0,而后 3 个数字为 1,该怎么办?或者如果我想让他们交替使用呢?

【问题讨论】:

  • 我会用半个 0 和半个 1 填充,然后随机播放。
  • 我很困惑,为什么不直接arr = np.array([0, 0, 0, 1, 1, 1]) ; np.random.shuffle(arr)
  • @DeepSpace 我这样做的原因是另一个代码,因为我在技术上将数组中的数字分配为“团队 0”和“团队 1”

标签: python arrays sorting random shuffle


【解决方案1】:

使用random.shuffle。请注意,它会就地洗牌,并返回None

import random
length = 3
subteam = [0] * length + [1] * length
random.shuffle(subteam)
print(subteam)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 2014-03-01
    • 2011-08-15
    • 2011-11-01
    • 2015-01-08
    • 1970-01-01
    相关资源
    最近更新 更多