Is there a way to append a row to a NumPy rec.array()? For example,
x1=np.array([1,2,3,4])
x2=np.array([\'a\',\'dd\',\'xyz\',\'12\'])
x3=np.array([1.1,2,3,4])
r
You can resize numpy arrays in-place. This is faster than converting to lists and then back to numpy arrays, and it uses less memory too.
print (r.shape)
# (4,)
r.resize(5)
print (r.shape)
# (5,)
r[-1] = (5,'cc',43.0)
print(r)
# [(1, 'a', 1.1000000000000001)
# (2, 'dd', 2.0)
# (3, 'xyz', 3.0)
# (4, '12', 4.0)
# (5, 'cc', 43.0)]
If there is not enough memory to expand an array in-place, the resizing (or appending) operation may force NumPy to allocate space for an entirely new array and copy the old data to the new location. That, naturally, is rather slow so you should try to avoid using resize
or append
if possible. Instead, pre-allocate arrays of sufficient size from the very beginning (even if somewhat larger than ultimately necessary).