Ring (aka circular) buffers backed by a numpy array, supporting:
- Operations from
collections.dequeb.append(val)b.appendleft(val)b.extend(val)b.extendleft(val)b.pop(val)b.popleft(val)
- The
collections.Sequenceprotocol (unoptimized) - C-side unwrapping into an array with
np.array(b) - Arbitrary element dtypes, including extra dimensions like
RingBuffer(N, dtype=(int, 3))
For example:
import numpy as np
from numpy_ringbuffer import RingBuffer
r = RingBuffer(capacity=4, dtype=bool)
r.append(True)
r.appendleft(False)
print(np.array(r)) # array([False, True])