【问题标题】:How to shuffle a matrix and an array accordingly如何相应地打乱矩阵和数组
【发布时间】:2015-01-19 20:31:53
【问题描述】:

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

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

random.shuffle(X)

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

谢谢你:)

【问题讨论】:

  • 你真的想要还是洗牌 Y 的列?
  • 我想打乱X的行,因为X的行对应Y的行,我也想打乱Y...
  • 你说的 correspond 是什么意思?这个对应的 > 背后的逻辑是什么?
  • 尝试洗牌一个索引矩阵,然后使用该索引矩阵重新创建 x 和 y
  • @Kasra - 这是机器学习的东西 - X 用于数据实例,Y 是标签。所以 Y 中的每一行 属于 X 中的一行。我无法忘记哪个标签属于哪个数据实例。

标签: python list numpy shuffle


【解决方案1】:

您可以使用numpy.random.permutation 创建indices 的置换列表,然后使用indicesXY 洗牌:

>>> 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, :]

【讨论】:

    猜你喜欢
    • 2022-08-03
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 2021-08-31
    • 2012-11-25
    • 1970-01-01
    相关资源
    最近更新 更多