Ненужный случайный выбор кортежей

У меня возникли проблемы с созданием массива случайных вариантов, где выбор является кортежем.

Я получаю сообщение об ошибке: a must be 1-dimensional

Вот пример:

choices = ((0,0,0),(255,255,255))
numpy.random.choice(choices,4)

Есть ли другой способ сделать это?

Ожидаемый результат:

массив numpy, состоящий из 4 элементов, случайно выбранных из кортежа выбора.

((0,0,0),(0,0,0),(255,255,255),(255,255,255))

Ответ 1

Используйте choice, чтобы выбрать индексы 1dim в массиве, затем проиндексируйте его.

В приведенном вами примере только число возможных вариантов влияет на характер выбора, а не на фактические значения (0, 255). Выбор индексов - это проблема 1dim choice знает, как обращаться.

choices = numpy.array([[0,0,0],[255,255,255]])
idx = numpy.random.choice(len(choices),4)
choices[idx]

Ответ 2

Просто добавив этот ответ, чтобы предоставить ответ non-numpy:

choices = ((0,0,0),(255,255,255))

from random import choice

print tuple(choice(choices) for _ in range(4))