はじめに
NumPyのrandom.choice
関数は、配列からランダムに要素を選択するための便利な方法を提供します。データサイエンスや機械学習の実験、シミュレーションなど、さまざまなシナリオで利用されています。この記事では、random.choice
の基本的な使い方から応用例までを詳しく解説します。
random.choiceの基本的な使い方
最も基本的な使い方は、1次元配列からランダムに要素を一つ選び出すことです。
import numpy as np
# 1次元配列からランダムに要素を選択
arr = np.array([10, 20, 30, 40, 50])
print(np.random.choice(arr))
確率を指定して要素を選択
各要素が選択される確率を指定することもできます。
# 各要素の選択確率を指定
probabilities = [0.1, 0.2, 0.3, 0.2, 0.2]
print(np.random.choice(arr, p=probabilities))
複数の要素をランダムに選択
複数の要素をランダムに選び出す場合、size
引数を使用します。
# 複数の要素をランダムに選択
print(np.random.choice(arr, size=3))
応用例
random.choice
関数は、データのサンプリング、モンテカルロシミュレーション、ブートストラップ法など、多くの分野で広く利用されています。
データのサンプリング
大規模なデータセットからサンプルデータを抽出する際にrandom.choice
を使用する例。
# データセットから100個のサンプルを抽出
dataset = np.arange(1000) # 仮のデータセット
sample = np.random.choice(dataset, size=100)
print(sample)
よくある質問
非復元抽出と復元抽出の違いは何ですか?
非復元抽出(replace=False
)では、一度選択された要素は再度選択されません。復元抽出(replace=True
)では、選択された要素が再度選択される可能性があります。
random.choiceで同じ要素が連続して選ばれるのを避けるには?
連続して同じ要素が選ばれることを避けるためには、選択された要素を記録し、次回の選択時に除外するロジックを追加する必要があります。
random.choiceはどのような乱数生成アルゴリズムを使用していますか?
NumPyの乱数生成は、デフォルトでメルセンヌ・ツイスタアルゴリズムを使用しています。しかし、numpy.random.Generator
クラスを使用することで、異なる乱数生成アルゴリズムを選択することも可能です。