web-dev-qa-db-ja.com

タプルのナンピーランダム選択

ランダムな選択肢の配列を作成するのに問題があります。選択肢はタプルです。

エラーが表示されます:a must be 1-dimensional

次に例を示します。

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

これを行う他の方法はありますか?

期待される結果:

tupleの選択肢からランダムに選択された4つの要素からなるnumpy配列。

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

choiceを使用して1dimindicesを配列に選択し、インデックスを付けます。

指定した例では、可能な選択肢のnumberのみが実際の値(0、255)ではなく、選択肢の性質に影響を与えます。インデックスの選択は1次元の問題であり、choiceはその処理方法を知っています。

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

この回答を追加して、non-numpyベースの回答:

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

from random import choice

print Tuple(choice(choices) for _ in range(4))
5
sshashank124

交換せずに具体的にサンプリングしたい場合は、以下を試すことができます。

import random
choices = ((0,0,0),(1,1,1),(2,2,2),(3,3,3))
random.sample(choices, 2)
1
chris838