我有两个长度为 10,000 的 numpy 数组 x 和 y。我想绘制 x 和 y 的 1,000 个条目的随机子集。有没有一种简单的方法可以在 x 和 y 上使用可爱、紧凑的 random.sample(population, k) 来选择相同的相应索引?(y 和 x 向量通过函数 y(x) 链接。)
谢谢。
您可以np.random.choice
在索引数组上使用并将其应用于两个数组:
idx = np.random.choice(np.arange(len(x)), 1000, replace=False)
x_sample = x[idx]
y_sample = y[idx]
只需将两者压缩在一起并将其用作人口:
import random
random.sample(zip(xs,ys), 1000)
结果将是 1000 对(2 元组)来自xs
和的对应条目ys
。
测试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]
使用该numpy.random.randint
函数,您可以生成一个随机数列表,这意味着您可以选择某些数据点两次。