Pythonのメモ帳

numpy, pandas, tensorflow を使いこなすための忘備録

配列から要素をランダムに抽出するための「インデックス」を作る

配列から要素をランダムに抽出するには、(要素の抽出に使う)インデックスをランダムにしておくだけでいい。

random_array = array[random_index]

ここではrandom_indexも配列。

 

以下は関連記事。

spcx8.hatenablog.com

 

順序をランダムにしたインデックス(配列)の作り方は色々ある。比較のため処理時間を測定。いずれも0~99,999の数字を重複なしでランダムに並べた配列を生成している。

import numpy as np

idx = np.array(range(100000))
np.random.shuffle(idx)

 → 所要時間:17 msec

 

idx = np.arange(0, 100000, 1)
np.random.shuffle(idx)

 → 所要時間:2.6 msec

 

idx = np.random.choice(100000, 100000,replace=False)

 → 所要時間:2.0 msec

 

idx = np.random.randint(0,100000,100000)  

 → 所要時間:2.0 msec

 

np.random.randint() とnp.random.choice() が一位タイ。中身の処理は一緒なんだろうか。こうしてみるとnp.random.shuffle()も大して変わらない。

かと言って抽出するもとの配列そのものをランダムにシャッフルしようとすると、その配列のサイズが大きい場合は処理が重くなるのでやらない方がいい。

 

 

 WEB/EC専門の転職支援サービス【サポタント】