2017-07-19 35 views
0

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

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

但是,最后一分钟没有数据。我想有missing value np.NAself.x但这NEP似乎已经导致没有。每秒(例如),一个新的实际值(来自某个传感器)将被添加到self.y,当前时间戳将被添加到self.x

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

这些数据通过MatPlotLib最终绘制...

回答

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())