目标是从原始总体中抽取 n 个数据点。但是原始人口具有序列相关性(将其视为时间序列数据),我想选择相邻的三个作为每个选择的一个单位。也就是说,每次都要选择相邻的三个数据点。选择必须在没有替代的情况下完成。
它将重复选择,直到样本数据点的数量达到 n。每个选择的数据点都必须是唯一的。(假设人口数据点都是唯一的。)
我怎样才能把它写成代码?我希望代码很快。
def subsampling(self, population, size, consecutive = 3):
#make seeds which doesn't have neighbors
seed_samples = np.random.choice(population,
size = int(size/consecutive),
replace = False)
target_samples = set(seed_samples)
#add neighbors to each seed samples
for dpoint in seed_samples:
start = np.searchsorted(population, dpoint, side = 'right')
neighbors = population[start:(start + consecutive -1)]
target_samples.add(neighbors)
return sorted(list(target_samples))
这段代码是我的粗略试验,但它没有给出正确的大小,因为可能有重复。