Python随机抽样两个数组,但匹配索引

时间:2013-10-21 03:04:37

标签: python random numpy

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

感谢。

3 个答案:

答案 0 :(得分:33)

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

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

答案 1 :(得分:6)

将两者拼接在一起并将其用作人口:

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

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

答案 2 :(得分:0)

在测试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]