python で2つの配列を同じようにシャッフルする

python でサンプルデータを作ろうとしたときに少し悩み調べたのでメモです。

例えば、配列 [a, b, c] と [A, B, C] があって、シャッフルした結果、 [c, a, b] と [C, A, B] のように2つの配列で順番が同じになるようにしたい場合の処理について、下記にズバリそのものが書かれていました。

ni4muraano.hatenablog.com

以下、実際の記述です(ここでは配列 [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)

とても助かりました!