Более быстрые альтернативы использованию numpy.random.choice в Python? - PullRequest
0 голосов
/ 01 декабря 2018

Моя цель - создать большой двумерный массив в Python, где каждое число равно 0 или 1. Для этого я создал вложенный цикл for, как показано ниже:

    for count in range(0,300):
      block = numpy.zeros((8,300000))

      for a in range(0,8):
        for b in range(0,300000):
          block[a][b] = numpy.random.choice(2,1, p=[0.9,0.1])

Блокимеет шанс 90% выбрать «0» и 10% выбрать «1».Но внешнему циклу for требуется более 1 минуты.Есть ли более эффективный способ выбора случайных чисел для большого числа массивов, при этом сохраняя возможность использовать значения «P»?(Это мой первый пост, извините, если форматирование не работает)

1 Ответ

0 голосов
/ 01 декабря 2018

Идея, лежащая в основе NumPy, заключается в том, чтобы не проходить через 720000000 итераций на уровне Python.Вы должны использовать операции с целым массивом, например, numpy.random.choice генерирует целый массив вариантов за один вызов:

block = numpy.random.choice(2, size=(8, 300000), p=[0.9, 0.1])

Это завершается почти мгновенно.

...