从python中的数组中选取随机样本

时间:2017-08-04 10:24:04

标签: python database random

我有两个数据集new_train_db1(大小为3000x200)和new_train_db2(大小为3000x200)和对应标签train_labels(3000x1)。我想要对new_train_db1new_train_db2train_labels进行二次采样,并保留100个样本。我有以下代码:

np.random.seed(0)
reduced_train_db1 = new_train_db1[np.random.randint(new_train_db1.shape[0], size=100), :]
np.random.seed(0)
reduced_train_db2 = new_train_db2[np.random.randint(new_train_db2.shape[0], size=100), :]
np.random.seed(0)
reduced_labels = train_labels[np.random.randint(train_labels.shape[0], size=100)]

实际上,我想要的是每次运行代码时都保留相同的样本。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

问题是你使用np.randon.randint三次,所以每次结果都会有所不同。为什么不运行一次并在任何地方重复使用相同的索引。

您可以定义执行一次性操作,使用numpy.random.randint函数生成随机索引并将其存储在文件中并写入一些其他行,其中您读取此文件并使用它来选择相同的文件每次运行的行。您可以使用 -

获取索引
ind = np.random.randint(3000,size = (100,))

您可以使用numpy.savenumpy.load保存并加载数组。

如果您打算仅在一个会话期间使用相同的行,并且不一定希望它们在所有会话中都相同,则您也不必另外保存和加载。