如何相应地洗牌矩阵和数组

How to shuffle a matrix and an array accordingly

假设我有一个名为 XmXd 矩阵和一个名为 YmX1 数组(使用 numpy)。 X 的行对应于 Y.

的行

现在假设我需要打乱 X 中的数据(行)。我用过:

random.shuffle(X)

有没有办法让我跟踪 X 的洗牌方式,以便我可以相应地洗牌 Y

谢谢:)

您可以使用 numpy.random.permutation 创建 indices 的排列列表,然后使用 indices 随机排列 XY

>>> import numpy
>>> m = 10
>>> X = numpy.random.rand(m, m)
>>> Y = numpy.random.rand(m)
>>> indices = numpy.random.permutation(m)
>>> indices
array([4, 7, 6, 9, 0, 3, 1, 2, 8, 5])
>>> Y
array([ 0.53867012,  0.6700051 ,  0.06199551,  0.51248468,  0.4990566 ,
        0.81435935,  0.16030748,  0.96252029,  0.44897724,  0.98062564])
>>> Y = Y[indices]
>>> Y
array([ 0.4990566 ,  0.96252029,  0.16030748,  0.98062564,  0.53867012,
        0.51248468,  0.6700051 ,  0.06199551,  0.44897724,  0.81435935])
>>> X = X[indices, :]