2017-07-19 5 views
0

Ich habe eine leicht modifizierte Implementierung von mtambos/ring_buffer Ringpuffer. Ich möchte es mit datetime64 Werte initialisieren. Ich kann die letzte Minute so bekommen:Initialisierung eines 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)) 

Allerdings gibt es keine Daten für diese Last Minute. Ich hätte gerne eine missing value np.NA in self.x, aber diese NEP scheint nirgends zu führen. Jede Sekunde (etwa) wird ein neuer realer Wert (der von einem Sensor kommt) zu self.y hinzugefügt und ein aktueller Zeitstempel wird zu self.x hinzugefügt.

Wie kann ich self.x mit fehlenden Werten initialisieren?

Diese Daten schließlich über MatPlotLib aufgetragen ...

Antwort

0

ein masked array benutzen, das ist eigentlich trivial:

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

Wo class RingBuffer(ma.MaskedArray). Um die Daten zu plotten, muss man dies tun:

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