29

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

谢谢。

4

4 回答 4

52

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

idx = np.random.choice(np.arange(len(x)), 1000, replace=False)
x_sample = x[idx]
y_sample = y[idx]
于 2013-10-21T03:12:12.787 回答
8

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

import random

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

结果将是 1000 对(2 元组)来自xs和的对应条目ys

于 2013-10-21T03:11:13.987 回答
1

测试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]
于 2020-07-24T09:48:31.993 回答
1

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

于 2021-10-07T10:23:40.077 回答