我有两个numpy数组x和y,长度为10,000。 我想绘制x和y的1,000个条目的随机子集。 有没有一种简单的方法可以在x和y上使用可爱的紧凑random.sample(population,k)来选择相同的相应索引? (y和x向量由函数y(x)表示。)
感谢。
答案 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)
结果将是来自xs
和ys
的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]