numpyのshuffleとpermutationの違い
python - shuffle vs permute numpy - Stack Overflow
numpyにはshuffle(x)とpermutation(x)というほぼ同じ機能の関数があります.
どちらも,配列をランダムに並び替えますが,違いが2つあります.
ひとつは,shuffle(x)は配列をin-placeで並び替えるが,permutation(x)は並び替えた配列のコピーを生成するという点です.つまり:
>>> import numpy as np >>> x = np.array([1,2,3,4,5]) >>> y = np.random.permutation(x) >>> # y : [3,1,4,2,5] >>> # x : [1,2,3,4,5] >>> >>> x = np.array([1,2,3,4,5]) >>> y = np.random.shuffle(x) >>> # y : None >>> # x : [5,2,3,4,1]
もうひとつの違いは,permutation(x)には配列だけでなくint型整数も渡せるという点です.
permutation(5)は,permutation(list(range(5)))と同じ働きをします.(permutation(arange(5))でも同じです.)