python で2つの配列を同じようにシャッフルする
python でサンプルデータを作ろうとしたときに少し悩み調べたのでメモです。
例えば、配列 [a, b, c] と [A, B, C] があって、シャッフルした結果、 [c, a, b] と [C, A, B] のように2つの配列で順番が同じになるようにしたい場合の処理について、下記にズバリそのものが書かれていました。
以下、実際の記述です(ここでは配列 [1, 2, 3, 4] と [11, 12, 13, 14] で行っています)
Numpy配列の場合
import numpy as np x = np.array([1,2,3,4]) y = np.array([11,12,13,14]) p = np.random.permutation(len(x)) x = x[p] y = y[p]
リストの場合
import random x = [1,2,3,4] y = [11,12,13,14] p = list(zip(x, y)) random.shuffle(p) x, y = zip(*p)
とても助かりました!