def add_field(a, descr):
    """Return a new array that is like "a", but has additional fields.
    Arguments:
      a     -- a structured numpy array
      descr -- a numpy type description of the new fields
    The contents of "a" are copied over to the appropriate fields in
    the new array, whereas the new fields are uninitialized.  The
    arguments are not modified.
    >>> sa = numpy.array([(1, 'Foo'), (2, 'Bar')],                          dtype=[('id', int), ('name', 'S3')])
    >>> sa.dtype.descr == numpy.dtype([('id', int), ('name', 'S3')])
    True
    >>> sb = add_field(sa, [('score', float)])
    >>> sb.dtype.descr == numpy.dtype([('id', int), ('name', 'S3'),                                        ('score', float)])
    True
    >>> numpy.all(sa['id'] == sb['id'])
    True
    >>> numpy.all(sa['name'] == sb['name'])
    True
    """
if a.dtype.fields is None:
    raise ValueError("`A' must be a structured numpy array")
Adding a field to a structured numpy array