我正在嘗試根據時間戳對時間序列進行分類(下采樣)。例如:
import numpy as np
import pandas as pd
timestamps = np.linspace(0, 1000, 10000)
values = np.random.random(10000)
我通常將其轉換為資料幀,并使用 cut(或 qcut)來創建 bin:
timeseries_df = pd.DataFrame({"Timestamps": timestamps, "Values": values})
timeseries_df["Bins"] = pd.cut(timeseries_df["Timestamps"],100) #downsampling by two orders of magnitude
ds_timestamps = timeseries_df.groupby("Bins").max()["Timestamps"]
ds_values = timeseries_df.groupby("Bins").mean()["Values"]
這有效,但我正在撰寫可以重用的函式,如果可能,我想避免使用熊貓。我已經嘗試實作這里建議的版本
ds_timestamps = np.linspace(timestamps.min(), timestamps.max(), 100)
digitized_timestamps = np.digitize(timestamps, ds_timestamps)
ds_values = [values[digitized_timestamps == i 1].mean() for i in range(len(ds_timestamps))]
這也有效,但速度非常慢。還有另一種方法嗎?
uj5u.com熱心網友回復:
正如評論中提到的,如果您不使用 Pandas 的主要問題是速度,我實際上建議使用它,因為它不是完全用 Python 撰寫的,但它有許多使用Cython(基本上是 C)撰寫的內部部分,所以它們“非常非常快。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/352947.html
