Я пытаюсь создать огромную матрицу boolean
, которая случайным образом заполнена True
и False
с заданной вероятностью p
. Сначала я использовал этот код:
N = 30000
p = 0.1
np.random.choice(a=[False, True], size=(N, N), p=[p, 1-p])
Но, к сожалению, это не заканчивается для этого большого N
. Поэтому я попытался разделить его на генерацию отдельных строк, выполнив следующее:
N = 30000
p = 0.1
mask = np.empty((N, N))
for i in range (N):
mask[i] = np.random.choice(a=[False, True], size=N, p=[p, 1-p])
if (i % 100 == 0):
print(i)
Теперь происходит нечто странное (по крайней мере, на моем устройстве): первые ~ 1100 строк генерируются очень быстро, но после этого код становится ужасно медленным. Почему это происходит? Что мне здесь не хватает? Есть ли лучшие способы создать большую матрицу, в которой есть записи True
с вероятностью p
и False
записи с вероятностью 1-p
?
Изменить: многие из вас предполагали, что с оперативной памятью возникнут проблемы: поскольку устройство, на котором будет выполняться код, имеет почти 500 ГБ оперативной памяти, это не будет проблемой.