Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to make a numpy recarray from column arrays

I have a pair of numpy arrays; here's a simple equivalent example:

t = np.linspace(0,1,100)
data = ((t % 0.1) * 50).astype(np.uint16)

I want these to be columns in a numpy recarray of dtype f8, i2. This is the only way I can seem to get what I want:

X = np.array(zip(t,data),dtype=[('t','f8'),('data','i2')])

But is it the right way if my data values are large? I want to minimize the unnecessary overhead of shifting around data.

This seems like it should be an easy problem but I can't find a good example.

like image 596
Jason S Avatar asked Jan 12 '23 03:01

Jason S


1 Answers

A straight-forward way to do this is with numpy.rec.fromarrays. In your case:

np.rec.fromarrays([t, data], dtype=[('t','f8'),('data','i2')])

or simply

np.rec.fromarrays([t, data], names='t,data', formats='f8,i2')

would work.

Alternative approaches are also given at Converting a 2D numpy array to a structured array

like image 186
JaminSore Avatar answered Jan 18 '23 03:01

JaminSore