初始化datetime64 RingBuffer

时间:2017-07-19 10:04:23

标签: python-3.x numpy matplotlib

我略微修改了mtambos/ring_buffer的环形缓冲区的实现。我想用datetime64值初始化它。我可以这样得到最后一分钟:

    self.x = RingBuffer(
        np.array([
            np.datetime64('now') - np.timedelta64(seconds=i)
            for i in range(60)
        ]))
    self.y = RingBuffer(np.zeros(60))

但是,最后一分钟没有数据。我希望在self.x中有一些missing value np.NA,但这NEP似乎没有领先。每隔一秒(比如说),一个新的实际值(来自某个传感器)将被添加到self.y,并且当前时间戳将被添加到self.x

如何使用缺失值初始化self.x

此数据最终通过MatPlotLib ...

绘制

1 个答案:

答案 0 :(得分:0)

使用masked array,这实际上是微不足道的:

    self.x = RingBuffer(
        ma.array([
            now - np.timedelta64(datetime.timedelta(microseconds=i))
            for i in range(self._seconds)
        ], mask=self._seconds*[True]))
    self.y = RingBuffer(ma.zeros(self._seconds),
                        mask=self._seconds*[True])

class RingBuffer(ma.MaskedArray)。要绘制数据,需要这样做:

        self.plt.set_xdata(self.x.compressed())
        self.plt.set_ydata(self.y.compressed())