【发布时间】:2016-08-01 16:03:50
【问题描述】:
如果没有一些标准库函数,尤其是在 numpy 或 scipy 中,我会感到震惊,但没有多少谷歌搜索能提供一个像样的答案。
我正在从 Poloniex 交易所获取数据 - 加密货币。可以将其想象为将股票价格(买卖订单)推送到您的计算机。所以我所拥有的是任何给定市场的价格时间序列。一个市场可能每天更新 10 次,而另一个市场每分钟更新 10 次 - 这完全取决于市场上有多少人在买卖。
所以我的时间序列数据最终会是这样的:
[1 0.0003234,
1.01 0.0003233,
10.0004 0.00033,
124.23 0.0003334,
...]
第 1 列是时间值(我使用 Unix 时间戳到微秒,但认为在示例中没有必要。第 2 列将是价格之一 - 买入或卖出价格。
我想要的是把它转换成一个矩阵,在这个矩阵中,数据在一个固定的时间范围内被“采样”。所以插值(零阶保持)矩阵将是:
[1 0.0003234,
2 0.0003233,
3 0.0003233,
...
10 0.0003233,
11 0.00033,
12 0.00033,
13 0.00033,
...
120 0.00033,
125 0.0003334,
...]
我想以任何合理的时间步长执行此操作。现在我使用np.linspace(start_time, end_time, time_step) 来创建新的时间向量。
编写我自己的、公认的粗略的零阶保持插值器不会那么难。我将遍历原始时间向量并使用 np.nonzero 查找新时间向量中适合一个时间戳 (t0) 和下一个时间戳 (t1) 之间的所有索引,然后用时间 t0 的值填充这些索引。
目前,粗略的方法将起作用。价格矩阵没有那么大。但我必须考虑使用其中一个内置库的更快方法。我就是找不到。
此外,对于上面的示例,我仅使用 Nx2 矩阵(第 1 列:时间,第 2 列:价格),但最终市场有 6 或 8 个可能会更新的不同参数。可以在不同列中处理多个价格等的方法/库函数会很棒。
Windows 7 上通过 Anaconda 的 Python 3.5(希望没关系)。
TIA
【问题讨论】:
标签: python numpy interpolation