Для моего проекта я хочу быстро генерировать случайные перестановки двоичного массива фиксированной длины и заданного числа 1s и 0s. Учитывая эти случайные перестановки, я хочу добавить их по-разному.Быстрая случайная перестановка двоичного массива
В настоящее время я использую объект ndarray numpy, который удобен для добавления в элемент. Мой текущий код выглядит следующим образом:
# n is the length of the array. I want to run this across a range of
# n=100 to n=1000.
row = np.zeros(n)
# m_list is a given list of integers. I am iterating over many possible
# combinations of possible values for m in m_list. For example, m_list
# could equal [5, 100, 201], for n = 500.
for m in m_list:
row += np.random.permutation(np.concatenate([np.ones(m), np.zeros(n - m)]))
Мой вопрос в том, есть ли более быстрый способ сделать это? Согласно timeit, 1000000 вызовов «np.random.permutation (np.concatenate ([np.ones (m), np.zeros (n - m)]))« занимает 49,6 секунды. Для целей моей программы я хотел бы уменьшить это на порядок. Может ли кто-нибудь предложить более быстрый способ сделать это?
Спасибо!
просто любопытно, 'python -O'? –