Случайный логический массив с фиксированным числом значений True и False - PullRequest
0 голосов
/ 26 февраля 2019

Я хочу создать двумерный массив с фиксированным числом True и False в каждой строке.Вот код для генерации случайного массива True и False:

np.random.choice(a=[False, True], size=(N, N), p=[p, 1-p])

Этот код даст мне массив N * N с вероятностью p для False и 1-p за True.Теперь я хочу установить фиксированное число False и True в каждой строке, а также случайное.Как я могу сделать это на Python?

Вот некоторые другие связанные вопросы, но они не совпадают с тем, что я задаю:

Пример на C

Пример на C #

Пример, но без определенного числа True и False

Редактировать: Я должен добавитьчто также эта ссылка мне тоже не поможет.Как видно из моего вопроса, я хочу иметь случайный логический 2d массив.Таким образом, создание 2d-массива и его перетасовка не будут полезны (shuffle не перетасовывает элементы независимо, он может просто перемещать столбцы или строки), поэтому это не случайный массив.Пожалуйста, откройте мои вопросы и позвольте людям ответить на них.

1 Ответ

0 голосов
/ 20 марта 2019

Если требуемое количество True (или False) значений в строке равно одному и только одному :

# size of our array
M = 5 # rows
N = 3 # columns

# create an array full of "False"
foobar = np.full((M,N), False)

# create a list of randomly picked indices, one for each row
idx = np.random.randint(N, size=M)

# replace "False" by "True" at given indices
foobar[range(M), idx] = True

Этот подход не будет работать так, как дляхотя несколько True значений в строке.

...