要素のシャッフル
random.shuffle()
random.shuffle() は ミュータブル (変更可能) なシーケンス x の要素をシャッフル (ランダムソート) します。
random.shuffle(x [, random])
オプション引数 random には 0.0 以上 1.0 未満の浮動小数点乱数を指定します。デフォルトでは random() 関数が与えられます。
# PYTHON_SHUFFLE # In[1] # randomモジュールをインポート import random # 乱数を初期化 random.seed(0) # 夏目漱石の作品 souseki = ["こころ", "三四郎", "夢十夜", "坊ちゃん", "草枕"] # リストをシャッフル random.shuffle(souseki) print(souseki) # ['夢十夜', '三四郎', 'こころ', '草枕', '坊ちゃん']
この関数は受け取ったシーケンスを書き換える破壊的操作を実行するので、引数 x にタプルのようなイミュータブル (変更不能) なシーケンスを渡すことはできません。イミュータブル・シーケンスをシャッフルさせたい場合は、random.sample() を使ってください。
numpy.random.shuffle()
numpy.random.shuffle() は受け取った配列の要素をシャッフルして並び替えます。
numpy.random.shuffle(x)
この関数は受け取った配列を書き換えます。
# NUMPY_SHUFFLE # In[1] # NumPyをインポート import numpy as np # 乱数シードを設定 np.random.seed(0) # 夏目漱石の作品 souseki = np.array([["坊ちゃん", "吾輩は猫である"], ["それから", "明暗"], ["道草", "倫敦塔"]]) # 要素をシャッフル np.random.shuffle(souseki) print(souseki) # [['道草' '倫敦塔'] # ['それから' '明暗'] # ['坊ちゃん' '吾輩は猫である']]
numpy.random.shuffle() と numpy.arange() を組合わせると、連続数字をシャッフルできます。
# In[2] # 乱数シードを設定 np.random.seed(0) # x=[0 1 2 3 4 5 6 7 8 9] x = np.arange(10) # 数字をランダムシャッフル np.random.shuffle(x) print(x) # [2 8 4 9 1 6 7 3 0 5]
コメント
下記は誤植と思われますので、ご確認ください。
「NUMPY_SHUFFLE-2」プログラムのコメントで、ランダムソート → ランダムシャッフル
ありがとうございます。
直しておきました。m(_ _)m