A dynamic, appandable version of Numpy's recarray
. The goal is to have a recarray
-like-object which can be appended to in a transparent and efficient way.
pip install dynamicsizerecarray
Initialize an empty DynamicSizeRecarray
with a dtype
.
import dynamicsizerecarray
dra = dynamicsizerecarray.DynamicSizeRecarray(
dtype=[("hour", "u1"), ("minute", "u1"), ("temperature", "f8")]
)
len(dra)
0
Or initialize the DynamicSizeRecarray
with an already existing recarray
.
import numpy
rec = numpy.core.records.recarray(
shape=1,
dtype=[("hour", "u1"), ("minute", "u1"), ("temperature", "f8")],
)
rec["hour"][0] = 2
rec["minute"][0] = 13
rec["temperature"][0] = 20.123
dra = dynamicsizerecarray.DynamicSizeRecarray(recarray=rec)
len(dra)
1
After initializing, the DynamicSizeRecarray
can be appended to dynamically. You can append a record
, i.e. a dict.
dra.append_record({"hour": 3, "minute": 53, "temperature": 22.434})
len(dra)
2
Or you can append another recarray
.
rec = numpy.core.records.recarray(
shape=1,
dtype=[("hour", "u1"), ("minute", "u1"), ("temperature", "f8")],
)
rec["hour"][0] = 13
rec["minute"][0] = 41
rec["temperature"][0] = 18.623
dra.append_recarray(rec)
len(dra)
3
When the dynamic appending is done, the DynamicSizeRecarray
can be exported to a classic, and static recarray
.
final = dra.to_recarray()
Further the DynamicSizeRecarray
provides the properties shape
and dtype
, and also implements __gettitem__
, __setitem__
.
dra.shape # shape
(3, )
dra[0] # __gettitem__
(2, 13, 20.123)
dra[1] = (7, 25, 21.45) # __setitem__
len(dra) # __len__
3
dra.dtype # exposes the internal recarray's dtype
dtype((numpy.record, [('hour', 'u1'), ('minute', 'u1'), ('temperature', '<f8')]))
record
is adict
with keys (and values) matching thedtype
of theDynamicSizeRecarray
. (Wording is adopted frompandas
).records
is just alist
ofrecord
s (Also adopted frompandas
).recarray
is short fornp.core.records.recarray
.