我们的数据集有数据点,但基线很长,差距很大。如直方图所示,横轴是时间,大部分时间没有数据。纵轴是数据计数。事实上,总时间很短(绿线),但间隔使时间基线非常长。

如果我们对数据进行分箱,就会有数据点[t,value],但只有大约是非零值。分箱后,由于这些差距,这些值中的大多数都为零。
如何提高检测效率(更快的方法)?
多线程方式是可能的(特别是对于 Lomb-Scargle)?
我们的数据集有数据点,但基线很长,差距很大。如直方图所示,横轴是时间,大部分时间没有数据。纵轴是数据计数。事实上,总时间很短(绿线),但间隔使时间基线非常长。

如果我们对数据进行分箱,就会有数据点[t,value],但只有大约是非零值。分箱后,由于这些差距,这些值中的大多数都为零。
如何提高检测效率(更快的方法)?
多线程方式是可能的(特别是对于 Lomb-Scargle)?
一种解决方法是分两步进行分析。首先,您对数据集进行扫描,并将所有非零值及其时间收集到(短得多!)数据结构中。您基本上收集了一个元组列表 [t,value]。之后的每次扫描都将非常快,因为您可以安全地假设不在列表中的每个数据点都为零。单击您的链接,我很难理解我所看到的。这些不是简单的 csv 样式数据点。它们的形式为:
139459196.2742752731
139462208.5806673169
139462689.1677284241
139467485.6161292493
...
这些只是你的时间,第二个数字被省略了吗?
你想如何进行周期性检测?这里最明显的方法是使用傅立叶变换,在变换之后,它会显示你在哪些频率上具有周期性。你研究过python的快速傅立叶变换吗:(scipy.fftpack)?如果在 python 中没有并行实现傅立叶变换,我会感到惊讶。如果这还不够快,还有 FFTW 库,它大胆地称自己为“西方最快的傅立叶变换”,但我必须警告你,使用它很麻烦。[编辑:] FFTW pyFFTW有一个 pyhton 包装器。
您似乎拥有令人印象深刻的大量数据。根据您的精度需求,您可能会做一些平均。如果你取第一个数据点,比如 10 个数据点,然后取最大振幅,则存储在一个较短的数组中,然后重复以下操作。您可能会显着缩短数据集(当然,时间轴上的精度会下降)。