我有100个样本块,每个样本块有100个元素。一块中的元素相隔5秒;但是,来自不同块的元素之间的时间差至少为5小时(不是固定时间)。我的主要目标是从数据集中随机抽取10个块。
我的数据集:
index time value
i 12-1-2019 05:22:43 12 } Chunk 1
i+1 12-1-2019 05:22:48 13
i+2 12-1-2019 05:22:53 14
..
i+99 ...............................
i+x 12-1-2019 13:32:12 31 } Chunk 2
i+x+1 12-1-2019 13:32:17 77
i+x+2 12-1-2019 13:32:22 16
..
i+x+99 ...............................
i+x 14-1-2019 23:45:43 14 } Chunk 3
i+x+1 14-1-2019 23:45:48 57
i+x+2 14-1-2019 23:45:53 46
..
i+x+99 ...............................
注意:这些块是有序的(即:块1发生在块2之前,块2发生在块3之前,依此类推)。
我想随机挑选100个中的10个。但是,大块中元素的顺序很重要,不能混洗。
答案 0 :(得分:1)
如果我对,您的第一个块从索引0到索引99,第二个块从索引99到索引199,依此类推。
如果是正确的话,您只需从0到99之间的10个唯一随机数和iloc
中的数据集中的相应行即可。
假设您的数据在pandas DataFrame中:
[dataset.iloc[index*100:index*100 + 100] for index in random.sample(range(0,100),10)]
我没有测试代码,因为我没有您的数据,但是上面的代码行应该为您提供10个长度为100的块的列表。
如果需要按照原始数据帧中的顺序对列表中的块进行排序,则可以对随机数进行排序:
[dataset.iloc[index*100:index*100 + 100] for index in sorted(random.sample(range(0,100),10))]