我想生成大小为N的随机数组,其中只包含0和1,但我希望我的数组在0和1之间有一些比例。例如,90%的数组为1,剩下的10%为0(但我希望这个90%沿整个阵列是随机的)。
现在我有:
randomLabel = np.random.randint(2, size=numbers)
但我无法控制0和1之间的比例。
如果你想要一个精确的1:9比例:
nums = numpy.ones(1000)
nums[:100] = 0
numpy.random.shuffle(nums)
如果您想要独立的10%概率:
nums = numpy.random.choice([0, 1], size=1000, p=[.1, .9])
要么
nums = (numpy.random.rand(1000) > 0.1).astype(int)
很难得到准确的计数,但你可以通过假设random.random
返回统一分布得到近似答案。严格来说并非如此,但只是大致如此。如果你有一个真正统一的分布,那么它是可能的。您可以尝试以下内容:
In [33]: p = random.random(10000)
In [34]: p[p <= 0.1] = 0
In [35]: p[p > 0] = 1
In [36]: sum(p == 0)
Out[36]: 997
In [37]: sum(p == 1)
Out[37]: 9003
希望这可以帮助 ...
不使用numpy,你可以这样做:
import random
percent = 90
nums = percent * [1] + (100 - percent) * [0]
random.shuffle(nums)