Я хочу, чтобы создать numpy
массив, где каждый элемент является количество 1
с другим numpy
массив размера x
, созданного с np.random.randint
.Использование np.random.randint в fill_value
>>> 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
.
Почему именно вы хотите иметь другой массив и считать те, что там есть? Не можете ли вы просто создать случайное число для целевого массива напрямую, используя соответствующий дистрибутив? Поэтому, возможно, просто сгенерируйте массив, используя биномиальное распределение. – languitar
@languitar потому что я хочу симулировать доску Galton (imagine 0 означает, что мяч уходит влево, 1 означает, что мяч идет справа). – user5368737
Конечно, но если ваши решения влево/вправо являются в основном независимыми монетами, то результат подсчета направления должен в основном быть образцом, взятым из биномиального распределения. – languitar