假设我有一个名为mXd
的{{1}}矩阵,以及一个名为X
的{{1}}数组(使用mX1
)。 Y
行对应numpy
行。
现在假设我需要在X
中混洗数据(行)。我用过:
Y
我有没有办法跟踪X
被洗牌的方式,所以我可以相应地改变random.shuffle(X)
?
谢谢:)
答案 0 :(得分:2)
您可以使用numpy.random.permutation
创建indices
的置换列表,然后使用X
对Y
和indices
进行随机播放:
>>> 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, :]