Вы можете иметь массив индексов такой же формы, что и соответствующие массивы, и каждый раз перемешивать индексный массив.В этом случае вы можете использовать перетасованные индексы для одинакового выравнивания обоих массивов.
In [122]: indices = np.indices((2, 2))
In [125]: np.random.shuffle(indices)
In [126]: indices
Out[126]:
array([[[0, 0],
[1, 1]],
[[0, 1],
[0, 1]]])
In [127]: x[indices[0], indices[1]]
Out[127]:
array([[ 2., 3.],
[16., 4.]])
In [128]: y[indices[0], indices[1]]
Out[128]:
array([[1., 0.],
[0., 1.]])