Создайте вектор размером x с двумя числами, случайно разделенными - PullRequest
0 голосов
/ 16 сентября 2018

Мне нужно создать массив размером x и заполнить его случайным образом разделенными 1 или -1. Я могу легко создать массив и заполнить его randint, но проблема в том, что я не хочу 0 в моем массиве.

У меня также есть точное число длины массива, поэтому мне нужно убедиться, что в нем содержится всего 100 или 1000 дюймов.

Если кто-нибудь знает, как решить эту проблему гладко, это будет очень признательно.

Спасибо

1 Ответ

0 голосов
/ 16 сентября 2018

Как упомянул @roganjosh в комментариях, вы можете использовать choice , одна альтернатива - использовать randint и сдвигать границы следующим образом:

import numpy as np

a = (2 * np.random.randint(low=0, high=2, size=10)) - 1
print(a)

выход

[ 1  1  1 -1 -1 -1  1 -1  1  1]

Тесты

import timeit

print(timeit.timeit('a = (2 * np.random.randint(low=0, high=2, size=1000)) - 1', setup='import numpy as np', number=10000))
print(timeit.timeit('a = np.random.choice([-1, 1], 1000)', setup='import numpy as np', number=10000))

выход

0.10986099799993099
0.18005346000063582
...