リストや1次元配列をシャッフルするときは分かりやすいのですが、多次元配列(2次元)の場合は一瞬「?」になりやすいので備忘録。
2次元配列を生成して実際にシャッフルしてみます。
import numpy as np arr = np.arange(9).reshape((3, 3)) print(arr) # [[0 1 2] # [3 4 5] # [6 7 8]] np.random.shuffle(arr) print(arr) # [[3 4 5] # [0 1 2] # [6 7 8]]
最初の軸に沿ってシャッフルされました(行方向)。ちなみに3次元以上の多次元配列でも同様に最初の軸がシャッフルされます。
ついでに行ごとの要素もシャッフルしてみます。
for values in arr: np.random.shuffle(values) print(arr) # [[4 5 3] # [1 2 0] # [8 7 6]]
行ごとの要素のindex対応関係はバラバラですが一応シャッフルできました。