【问题标题】:Python random sample of two arrays, but matching indices两个数组的 Python 随机样本,但匹配索引
【发布时间】:2013-10-29 10:06:17
【问题描述】:

我有两个长度为 10,000 的 numpy 数组 x 和 y。 我想绘制 x 和 y 的 1,000 个条目的随机子集。 有没有一种简单的方法可以在 x 和 y 上使用可爱、紧凑的 random.sample(population, k) 来选择相同的相应索引? (y 和 x 向量通过函数 y(x) 链接。)

谢谢。

【问题讨论】:

    标签: python random numpy


    【解决方案1】:

    只需将两者压缩在一起并将其用作人口:

    import random
    
    random.sample(zip(xs,ys), 1000)
    

    结果将是来自 xsys 的 1000 对(2 元组)对应条目。

    【讨论】:

    【解决方案2】:

    您可以在索引数组上使用np.random.choice 并将其应用于两个数组:

    idx = np.random.choice(np.arange(len(x)), 1000, replace=False)
    x_sample = x[idx]
    y_sample = y[idx]
    

    【讨论】:

    • 非常感谢!我没有意识到你可以调用像 x[idx] 这样的数组的条目!
    【解决方案3】:

    测试numpy.random.choice解决方案后, 我发现对于更大的数组来说它非常慢。

    numpy.random.randint 应该更快

    例子

    x = np.arange(1e8)
    y = np.arange(1e8)
    idx = np.random.randint(0, x.shape[0], 10000)
    return x[idx], y[idx]
    

    【讨论】:

      【解决方案4】:

      使用numpy.random.randint 函数,您可以生成一个随机数列表,这意味着您可以选择某些数据点两次。

      【讨论】:

        猜你喜欢
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-15
        • 1970-01-01
        相关资源
        最近更新 更多