我想创建一个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
快速完成。
答案 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个概率。