def append_rows(arrayIN, NewRows):
    """Append rows to numpy recarray.
    Arguments:
      arrayIN: a numpy recarray that should be expanded
      NewRows: list of tuples with the same shape as `arrayIN`
    Idea: Resize recarray in-place if possible.
    (only for small arrays reasonable)
    >>> arrayIN = np.array([(1, 'a', 1.1), (2, 'dd', 2.0), (3, 'x', 3.0)],
                           dtype=[('a', '<i4'), ('b', '|S3'), ('c', '<f8')])
    >>> NewRows = [(4, '12', 4.0), (5, 'cc', 43.0)]
    >>> append_rows(arrayIN, NewRows)
    >>> print(arrayIN)
    [(1, 'a', 1.1) (2, 'dd', 2.0) (3, 'x', 3.0) (4, '12', 4.0) (5, 'cc', 43.0)]
    Source: http://stackoverflow.com/a/1731228/2062965
    """
len_arrayIN = arrayIN.shape[0]
len_NewRows = len(NewRows)
arrayIN.resize(len_arrayIN + len_NewRows, refcheck=False)
arrayIN[-len_NewRows:] = NewRows
Append Row(s) to a NumPy Record Array