使用np.random.randint作为fill_value

时间:2017-02-10 15:10:58

标签: python arrays numpy

我想创建一个numpy数组,其中每个元素都是使用1创建的另一个numpy数组x数组np.random.randint的数量>>> x = 10 >>> np.random.randint(2, size=x) array([0, 1, 0, 1, 0, 1, 0, 1, 0, 1]) >>> sum(array([0, 1, 0, 1, 0, 1, 0, 1, 0, 1])) 5

>>> np.full((5,), sum(np.random.randint(2, size=10)), dtype="int")
array([5, 5, 5, 5, 5])

并像这样使用它会导致使用相同的数组,而不是每次都生成一个新的随机数

>>> a = np.random.rand(10)
>>> len(a[a < 0.5])
7
>>> np.full((5,), len(np.random.rand(10)[np.random.rand(10) < 0.5]), dtype="int")
array([7, 7, 7, 7, 7])

我该怎么做,或者有更好的方法吗?我也试过以下

numpy

但正如您所看到的那样,也会产生相同的数字。问题是我不想使用for循环,而是找到一种方法使用setAttribute快速完成。

2 个答案:

答案 0 :(得分:1)

您可以生成一个矩阵,该矩阵是N个数组,每个数组都由随机整数组成x。然后对每个数组求和,

import numpy as np
x = 10
N = 5
a = np.sum(np.random.randint(2, size=[N,x]),0)

我非常确定np.full不是你想要的,因为这是用于将数组初始化为单个值。

答案 1 :(得分:0)

使用上面讨论的二项分布:

In [13]: np.random.binomial(10, 0.5, 5)
Out[13]: array([7, 4, 6, 7, 4])

这假设有10个不同的左/右决策,每个决策都有0.5个概率。