スポンサーリンク

【Numpy】配列からランダムに要素を抽出するnumpy.random.choice【Python】

Numpy

Numpyで配列からランダムに要素を抽出するには、numpy.random.choiceを使う。

numpy.random.choiceの使い方

numpy.random.choiceの第一引数に整数値、第二引数sizeを指定すると、0から第一引数で指定した値までの範囲(np.arange(a)で生成した配列)で、size個数分がランダムで抽出される。
第一引数は0より大きい値である必要があり、0以下の場合は、ValueErrorが発生する。

import numpy as np

print(np.random.choice(5, size=1))
# [2]

print(np.random.choice(5, size=3))
# [3 2 4]

print(np.random.choice(-5, size=1))
# ValueError: a must be greater than 0 unless no samples are taken

重複なしの選択

第三引数replaceFalseにすると、選択される要素が重複することが無くなる。デフォルトはreplace=Trueのため、選択される要素は重複ありである。

print(np.random.choice(5, size=3, replace=False, p=[0, 0, 0.1, 0.4, 0.5]))
# [3 4 4]

選択する確率を指定

引数pにリストで各要素の出現確率を指定することで、抽出される確率を制御することができる。

print(np.random.choice(5, size=3, p=[0, 0, 0.1, 0.4, 0.5]))
# [3 4 4]

ndarray配列やリストを入力としてnumpy.random.choiceを使う

第一引数にndarray配列やリストを指定して使うこともできる。

list_pooh = ['pooh', 'rabbit', 'piglet', 'Christopher']
print(np.random.choice(list_pooh, 5, p=[0.3, 0.2, 0.2, 0.3]))
# ['pooh' 'pooh' 'pooh' 'piglet' 'pooh']

a = np.array([1, 3, 5, 7, 9, 11])
print(np.random.choice(a, 5, p=[0.1, 0.3, 0.2, 0.1, 0.2, 0.1]))
# [1 7 5 1 9]

関連記事、参考資料

コメント