该算法只是从输入数据阵列构建一个新列表。一旦元素越过前一个存储元素的visibleDelta阈值,它只会从输入数组中追加一个新元素:
def subsample(data, visibleDelta):
subsampled = [data[0]]
for point in data[1:]:
if abs(point - subsampled[len(subsampled) - 1]) > visibleDelta:
subsampled.append(point)
return subsampled
问题是我需要在非常大的数据集(~1B值)上运行,并且如果可能的话,我想使用numpy或其他数值库来执行此操作。
我应该提一下,'真正的'功能不只是处理一维数据。输入数据将是一个pandas数据帧,第一列是x值,第二列是y值(我将比较y值)。
有效地做到这一点吗?