Adding a field to a structured numpy array (2)

Solution 1:

http://projects.scipy.org/numpy/browser/branches/1.3.x/numpy/lib/recfunctions.py?rev=8229

did you import?

from numpy.lib import recfunctions

recfunctions.append_fields(*your_args)  # base, names, data, ...

Seems like everything is working:

Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.__version__
'1.3.0'
>>> from numpy.lib.recfunctions import append_fields
>>> append_fields
<function append_fields at 0x9e3e80c>
>>> 

Solution 2:

Here is a concrete example how to use append_fields(..) (admittedly based on the other answers here):

import numpy as np
x = np.array(np.arange(0,10), dtype = [('x', float)])
y = np.array(np.arange(10,20), dtype = [('y', float)])

from numpy.lib.recfunctions import append_fields

z = append_fields(x, 'y', y)

where

z.dtype.names

will give

('x', 'y')

note that y in can also be 'plain' ndarray without column names:

y = np.arange(10,20)

or you can rename the column y to something else (even if y is a structured array with column names):

z = append_fields(x, 'p', y)

(tested in numpy 1.6.1)