我有两个numpy数组x和y,长度均为10,000。
我想绘制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)
xs
和 ys
对应的 1000 对二元组。
更新:对于 Python 3,你需要将压缩后的序列转换为列表:
random.sample(list(zip(xs,ys)), 1000)
numpy.random.randint
函数,您可以生成一个随机数列表,这意味着您可以选择某些数据点两次。在测试了 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]
x_sample = list(np.array(x)[idx])
。 - Codoscope