Numpyのshuffleでリセットできるものがなかったようなので作ってみました。
そもそもあったり、もっといい書き方があったら教えてください。
resettable_shuffleでシャッフルして、reset_shuffleで元に戻します。
test.py
import numpy as np
# arrayは普通の1次元のリスト
# 破壊的メソッド
def resettable_shuffle(array, seed):
np.random.seed(seed)
np.random.shuffle(array)
# arrayは普通の1次元のリスト
# 非破壊的メソッド
def reset_shuffle(array, seed):
seq = np.arange(len(array))
np.random.seed(seed)
np.random.shuffle(seq)
tmp = np.c_[seq.T, np.array(array).T]
tmp = np.ndarray.tolist(tmp)
tmp = sorted(tmp)
tmp = np.array(tmp)
return np.ndarray.tolist(tmp[:,1])
seed = 321654
a = ["a","b","c","d","e","f"]
resettable_shuffle(a, seed)
print(a)
a = reset_shuffle(a, seed)
print(a)
出力結果
['a', 'b', 'c', 'd', 'e', 'f']
['c', 'f', 'd', 'e', 'a', 'b']
['a', 'b', 'c', 'd', 'e', 'f']
宣伝
フォローお願いします @redshoga